作者:绿色风
分类:
时间:2022-08-17
浏览:113
楼主 wise |
Q: 如何在VBA中用正则表达式表示不包含1250的字符串? A:ALT+F11→插入模块→在模块中输入以下代码:
- Sub Regs()
- Dim Reg As Object
- Set Reg = CreateObject("VBScript.regexp")
- Dim str, mat
- str = "399125078"
- Reg.Pattern = "^((?!1250).)*$"
- Reg.Global = True
- MsgBox Reg.test(s)
- Set Reg = Nothing
- End Sub
'如果匹配1250,则返会false,否则为true。 '其中,(?!1250)表示不匹配1250, '而^表示匹配字符串的开始位置, '.表示匹配除 "\n" 之外的任何单个字符, '$表示匹配字符串的结束位置, '*表示匹配前面的子表达式零次或多次。 '整个匹配式连起来就是: 匹配空值或者匹配不含1250的字符串? '其中(?!1250)后面必须加一个“.”,那么(?!1250).表示不含1250且至少有一个字符。其实整个就是(?!1250)和(.)*的组合,(.)*表示空串或者任意一个串(不包含\n)。 |
2楼 kevinchengcw |
这个学习一下 |
3楼 xyh9999 |
这个没用过 好好向楼主学习 |
4楼 DJ_Soo |
^和$怎么代表起始和结束了?^不是排除的意思么?这段Pattern我一点没看懂...
再有,你的题目说是不包含1250的,但是为什么测试数据中有1250,测试结果却是True呢??? |
5楼 bluexuemei |
学习! |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一