我正在使用Like运算符进行模式搜索。这是我到目前为止想出的:
if MyString Like "*sometext?" + "_*" then
debug.print "Match found!"
else
debug.print "Not a match"
Run Code Online (Sandbox Code Playgroud)
我需要这个来匹配只有当之间的字符sometext和_一个数字(只有一个单一的数字,没有字母)。例如:
MyString='testingsometext3_whatever' 应该是一场比赛
MyString='testingsometext321_whatever' 不应该是匹配的(有 3 位数字,而不仅仅是一位)
MyString='testingsometext_whatever'不应该是匹配项,因为text和之间没有字符_
MyString='testingsometexts_whatever'不应该是匹配项(text和之间至少有一个字母数字_) -目前这对我不起作用,我需要帮助
虽然正则表达式可能有点矫枉过正,但我发现它更容易使用。
试试下面的代码:
With CreateObject("VBScript.RegExp")
.Pattern = "testingsometext\d_whatever"
If .Test(MyString) Then
debug.print "Match found!"
else
debug.print "Not a match"
End If
End With
Run Code Online (Sandbox Code Playgroud)
这个模式其实很简单。
testingsometext 匹配文字字符串\d 匹配任何一位数字_whatever 匹配文字字符串这也将匹配blahtestingsometext1_whateverblah,因为没有字符串锚点的开始/结束。
我为您走这条路线是因为您在模式 ( *sometext?_*) 的两端放置了星号,并假设这是需要的。如果这不是所需的行为,并且只想匹配字符串前后没有任何内容的确切短语,则将模式行更改为:
.Pattern = "^testingsometext\d_whatever$"。