//还有一种... 我看个大佬写的... //人家的比较厉害一些...... 测试文本 = "~G我1a!H是2b@I3c#J老4d$K农5e%L6f&" 只取汉字 = 文本提取(测试文本, 0) 只取数字 = 文本提取(测试文本, 1) 只取符号 = 文本提取(测试文本, 2) 只取字母 = 文本提取(测试文本, 3) 只取小写 = 文本提取(测试文本, 4) 只取大写 = 文本提取(测试文本, 5) MsgBox 只取汉字, 0, "只取汉字" //返回: 我是老农 MsgBox 只取数字, 0, "只取数字" //返回: 123456 MsgBox 只取符号, 0, "只取符号" //返回: ~!@#$%& MsgBox 只取小写, 0, "只取小写" //返回: abcdef MsgBox 只取大写, 0, "只取大写" //返回: GHIJKL //------------------------------- //提取符合条件的文本 //源文本[文本型]: 需要处理的文本 //筛选方式: 可选择默认设置或自定义正则 //0=只取汉字 1=只取数字 2=只取符号 //3=只取字母(大小写) 4=只取小写字母 5=只取大写字母 //可自定义正则 如: "\u4e00-\u9fa5" 提取所有中文 // // 中文编码范围,中文汉字的正则也许用的着。 // 双字节字符编码范围: // 一、 GBK (GB2312/GB18030) // \x00-\xff →GBK双字节编码范围 // \x20-\x7f →ASCII // \xa1-\xff 中文 →gb2312 取出所有中文 // \x80-\xff 中文 →gbk 取出所有中文 // // 二、 UTF-8 (Unicode) // \u4e00-\u9fa5 →(中文) 取出所有中文 // \x3130-\x318F →(韩文) 取出所有韩文 // \xAC00-\xD7A3 →(韩文) 取出所有韩文 // \u0800-\u4e00 →(日文) 取出所有日文 // Function 文本提取(源文本, 筛选方式) Dim Matches, Match, TmpTxt, TmpPattern //正则表达式 Set TmpRegEx = New RegExp TmpRegEx.IgnoreCase = False TmpRegEx.Multiline = True Execute "TmpRegEx.Global = " & True If IsNumeric(筛选方式) Then If 筛选方式 = 1 Then TmpPattern = "[0-9]" ElseIf 筛选方式 = 2 Then TmpPattern = "[^0-9a-zA-Z\u4e00-\u9fa5]" ElseIf 筛选方式 = 3 Then TmpPattern = "[a-zA-Z]" ElseIf 筛选方式 = 4 Then TmpPattern = "[a-z]" ElseIf 筛选方式 = 5 Then TmpPattern = "[A-Z]" Else TmpPattern = "[^\x20-\x7f]" End If Else TmpPattern = 筛选方式 End If TmpRegEx.Pattern = TmpPattern Set Matches = TmpRegEx.Execute(源文本) //获取结果 For Each Match In Matches TmpTxt = TmpTxt & Match Next //输出并释放对象 Set TmpRegEx = Nothing Set Matches = Nothing 文本提取 = TmpTxt End Function
|