我有一个字符串,当有一个插入括号时,我想在VBA正则表达式上匹配,但不是两个。
例如,“沙漠(蛋糕,馅饼)”应该匹配,但“沙漠(南瓜,糖果(蛋糕,馅饼))”不应该匹配。
但是,此模式匹配上述两个搜索字符串:
regex.Pattern = LCase("desert") & ".*\(.*" & searchString
有没有办法告诉它我只有一个匹配,如果有两个,那么它不好吗?我认为问题是。*正在吞噬第二个问题。
答案 0 :(得分:0)
如果我正确理解了您的示例,那么您可以使用简单的character class来实现此目的。
[^()]*\([^()]*\)
=>
regex.Pattern = LCase("desert") & [^()]*\([^()]*\) & searchString
...会寻找一个开场白,接下来是任意数量的非paren角色,接着是一个关闭的paren。由于模式在中间寻找非paren字符,因此应满足您的要求。
答案 1 :(得分:0)
是的,你必须告诉它不匹配第一个后的左括号:
regex.Pattern = LCase("desert") & ".*\([^\(]*" & searchString