测试文本 = "hello HELLO ★+_)(*&^%$#@! 987654321 翠翠"
只取汉字 = 文本提取(测试文本, 0)
只取数字 = 文本提取(测试文本, 1)
只取符号 = 文本提取(测试文本, 2)
只取字母 = 文本提取(测试文本, 3)
只取小写 = 文本提取(测试文本, 4)
只取大写 = 文本提取(测试文本, 5)
/*
MsgBox 只取汉字, 0, "只取汉字" //返回: 翠翠
MsgBox 只取数字, 0, "只取数字" //返回: 123456
MsgBox 只取符号, 0, "只取符号" //返回: ★+_)(*&^%$#@!
MsgBox 只取小写, 0, "只取小写" //返回: hello
MsgBox 只取大写, 0, "只取大写" //返回: HELLO
*/
/*
提取符合条件的文本
源文本[文本型]: 需要处理的文本
筛选方式: 可选择默认设置或自定义正则
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