我正在寻找创建一个 VBA 正则表达式,它将在一组括号内找到两个特定字符串的存在。
例如,在这个表达式中:
(aaa, bbb, ccc, ddd, xxx aaa)
它应该以某种方式告诉我它在表达式中同时找到了“aaa”和“xxx aaa”。即,由于在前面没有“xxxx”的“aaa”上有匹配,并且在表达式中后面的“xxx aaa”上也有匹配,它应该返回true。由于这两个序列可以按任一顺序出现,反之亦然。
所以我认为表达式/s 将是这样的:
"(xxx aaa"[^x][^x][^x][^x]aaa)"
以一种顺序查找单词并
"(aaa"[^x][^x][^x][^x]xxx aaa)"
对于另一个顺序的单词。
这有意义吗?或者有更好的方法吗?
我知道这正在改变规范,但有一个重要的附录 - 术语之间不能有任何中间括号。
例如,这不应该匹配:
(aaa, bbb, ccc, ddd, (eee, xxx aaa))
换句话说,我试图只在一组匹配的括号之间查找。
最佳答案
从您的问题中并不清楚您到底想要什么(也许这里并不真正需要 Regexp),但这可能很接近:
Sub Tester()
RegexpTest ("(aaa, bbb, ccc, ddd, xxx aaa)")
End Sub
Sub RegexpTest(txt As String)
Dim re As Object
Dim allMatches, m
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "([^,\(]*aaa)"
re.ignorecase = True
re.Global = True
Set allMatches = re.Execute(txt)
For Each m In allMatches
Debug.Print Trim(m)
Next m
End Sub
关于regex - VBA 正则表达式 - 匹配不以特定单词开头的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11724196/