regex - VBA 正则表达式 - 匹配不以特定单词开头的表达式

标签 regex vba

我正在寻找创建一个 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/

相关文章:

regex - 非贪婪模式表达式

javascript - CSS 文本阴影值 RegEx

regex - 使用正则表达式从字符串中提取版本并提前

vba - SendKeys 从 Internet Explorer 打开 Excel 文件

regex - 错误 : Big Query REGEX_EXTRACT Cannot parse regular expression: invalid perl operator: (? <

regex - Perl:为什么这些不等价?

excel-2007 - 如何找到图片对象的坐标或Cell?

excel - MS Excel 的条件数据验证

VBA 整数除法

excel - 从另一个工作簿运行宏