Regex VBA检查字符串与单词完全匹配
我使用下面的代码检查字符串是否与模式匹配Regex VBA检查字符串与单词完全匹配,regex,vba,Regex,Vba,我使用下面的代码检查字符串是否与模式匹配 Sub chkPattern(str As String, pattern As String) Dim objRegex As Object Set objRegex = CreateObject("vbscript.regexp") objRegex.pattern = pattern MsgBox objRegex.test(str) End Sub 具体来说,我想检查字符串是否匹配整个字符串“abc”或“x
Sub chkPattern(str As String, pattern As String)
Dim objRegex As Object
Set objRegex = CreateObject("vbscript.regexp")
objRegex.pattern = pattern
MsgBox objRegex.test(str)
End Sub
具体来说,我想检查字符串是否匹配整个字符串“abc”或“xy”的“cde”
例如,如果输入是“abccde”或“abcxy”或“abccdexyz”,我希望它将返回false
我已经尝试过的一些模式,如:“abc | cde | xyz”、“\b(abc | cde | xyz)\b)”不起作用
这可以在VBA中通过使用正则表达式来实现吗?\babc\b |\bcde\b |\bxy\b应适用于“abc”或“cde”或“xy”,但不适用于其他变体。以匹配整个单词的使用
(\w+)
(\w+)
捕获组
\w+
匹配任何单词字符(等于[a-zA-Z0-9])
+
量词-在一次和无限次之间尽可能多地匹配
有可能是的。在我阅读您的问题时,您希望将
或
与管道字符一起应用
Sub Test()
Dim arr As Variant: arr = Array("abc", "cde", "xy")
With CreateObject("VBScript.RegExp")
.Pattern = "^(" & Join(arr, "|") & ")$"
Debug.Print .Test("abcd") 'Will return False
Debug.Print .Test("abc") 'Will return True
End With
End Sub
这里匹配整个字符串的键是开始字符串ancor^
和结束字符串ancor$
。如果您的意思是要测试部分匹配,那么您只需颠倒斜杠即可。使用反斜杠而不是正斜杠>\b(abc | cde | xyz)\b
作为模式
请记住,如果要忽略大小写比较,请使用.IgnoreCase=True
或者使用内置的
操作符,如
操作符。告诉您要检查的字符串是什么?那么期望的结果是什么呢?是您尝试过的\b(abc | cde | xyz)\b
还是您真的输入错误并将单词边界写为/b
?对不起,我编辑为/b