vba正则表达式(vba正则表达式实例)
excel vba的正则表达式是不是不能匹配^和$?
vba中的正则是支持^和$的
^\s+
或者
\s$
两者不能同时使用。。。。。这样就匹配不上了
VBA 正则式
正则语法几乎都一样。
vba你调用的是vbscript.regexp正则库吧。
vbscript正则不支持零宽断言语法。相对c#正则来说vbscript正则就弱了一点,其他的语法都是一样的。
还有
\\d{4}q\\d{3}
这句话我不知道你是不是从c#或c++中复制过来的,vba中这个“\”斜杠不是转义符来的。所以要注意改成
\d{4}q\d{3}
就可以了。
Excel 怎么样写VBA正则表达式
分享一个以前的qq日记
做一个从word文档读取数据写入excel的工具,遇到一个问题是word表格中包含一些隐藏字符,例如换行、回车等不可见字符时,要将这些字符去除后才能同关键字进行比较运算。从百度找到了一段代码修改成一个去除字符的函数,感觉挺好用,在这里记录一下。
Function qczf(A)
With CreateObject("vbscript.RegExp")
.Global = True
.ignorecase = True
.Pattern = "[^0-9A-Za-z一-龥]"
qczf = .Replace(A, "")
End With
End Function
取一串字符串中的数字
Sub RegTest()
Dim oRegExp As Object
Dim oMatches As Object
Dim sText As String
sText = "柴塘河节制闸3300×4960平面钢闸门AAA9999BBB888"
Set oRegExp = CreateObject("vbscript.regexp")
With oRegExp
.Pattern = "\D+(\d+)\D+(\d+)\D+(\d+)\D+(\d+)"
Set oMatches = .Execute(sText)
Debug.Print oMatches(0).submatches(0) '第一个数
Debug.Print oMatches(0).submatches(1) '第二个数
Debug.Print oMatches(0).submatches(2) '第三个数
Debug.Print oMatches(0).submatches(3) '第四个数
End With
Set oRegExp = Nothing
Set oMatches = Nothing
End Sub
下面这段代码实现:去除所有中文
Sub RegTest3()
'定义正则表达式对象
Dim oRegExp As Object
'定义匹配字符串集合对象
Dim oMatches As Object
'创建正则表达式
'定义要执行正则查找的文本变量
Dim sText As String
sText = "这是v一个正则表达式b的范例程序a代码"
Set oRegExp = CreateObject("vbscript.regexp")
With oRegExp
'设置是否匹配所有的符合项,True表示匹配所有, False表示仅匹配第一个符合项
.Global = True
'设置是否区分大小写,True表示不区分大小写, False表示区分大小写
.IgnoreCase = True
'设置要查找的字符模式
.Pattern = "[\u4e00-\u9fa5]+"
'判断是否可以找到匹配的字符,若可以则返回True
'MsgBox .test(sText)
'对字符串执行正则查找,返回所有的查找值的集合,若未找到,则为空
'Set oMatches = .Execute(sText)
'把字符串中用正则找到的所有匹配字符替换为其它字符
'MsgBox .Replace(sText, "")
mys = .Replace(sText, "")
Debug.Print mys
End With
Set oRegExp = Nothing
Set oMatches = Nothing
End Sub
如何在Excel VBA 中使用正则表达式
1
新建一个空白工作簿,在工作表界面按下组合快捷键Alt+F11或者右键单击任意一个工作表标签,在弹出的右键快捷菜单单击“查看代码”进入VBA编辑环境,如下图所示:
如何在Excel VBA 中使用正则表达式?
2
在“代码窗口“中复制粘贴以下代码:
Sub RegTest()
'定义正则表达式对象
Dim oRegExp As Object
'定义匹配字符串集合对象
Dim oMatches As Object
'创建正则表达式
'定义要执行正则查找的文本变量
Dim sText As String
sText = "这是v一个正则表达式b的范例程序a代码"
Set oRegExp = CreateObject("vbscript.regexp")
With oRegExp
'设置是否匹配所有的符合项,True表示匹配所有, False表示仅匹配第一个符合项
.Global = True
'设置是否区分大小写,True表示不区分大小写, False表示区分大小写
.IgnoreCase = True
'设置要查找的字符模式
.Pattern = "[\u4e00-\u9fa5]+"
'判断是否可以找到匹配的字符,若可以则返回True
MsgBox .Test(sText)
'对字符串执行正则查找,返回所有的查找值的集合,若未找到,则为空
Set oMatches = .Execute(sText)
'把字符串中用正则找到的所有匹配字符替换为其它字符
MsgBox .Replace(sText, "")
End With
Set oRegExp = Nothing
Set oMatches = Nothing
End Sub
如下图所示:
如何在Excel VBA 中使用正则表达式?
3
执行以上代码,将把 sText = "这是v一个正则表达式b的范例程序a代码" 变量中的中文字符全部删除,将只返回"vba"3个英文字符,如下图所示。其中的.Pattern = "[\u4e00-\u9fa5]+"表示匹配所有中文字符,Pattern属性是正则表达式对象的核心,当需要执行其它查找替换时一般都只需更改Pattern属性即可。
如何在Excel VBA 中使用正则表达式?
4
一些常见的正则Pattern如下:
[0-9]表示匹配任意一个数字
[a-zA-Z]表示匹配任意一个英文字母
[\u4e00-\u9fa5]表示匹配任意一个中文字符