VBA Excel正则expression式 – \ b字边界不匹配,如果字是在string的开始
我在Excel中使用VBA正则expression式引擎来匹配单词边界上开始的单词(例如\babc
)。
但是,如果单词在string的开头,这不起作用。
一种select是在string的开始处进行比较(例如^abc
)“,但是这会使代码变得更复杂一点,是否有更好的解决scheme?
你可以使用替代?
(?:\b|^)abc
更新:
至less在Excel 2010中, \b
按预期工作。
Sub test() Set re = CreateObject("VBScript.RegExp") re.Pattern = "\babc" MsgBox re.test("abc") re.Pattern = "^abc" MsgBox re.test("abc") re.Pattern = "(?:\b|^)abc" MsgBox re.test("abc") End Sub
上面的输出是真的,真的,对我来说是真的。
我不确定为什么这不适用于VBA。 在任何正则expression式实现中,我已经看到\ b匹配字边界也在string的开头。
也许你可以尝试这样的事情: (?:^|\b)abc