0

我有一个字符串,当有一个插入括号但不是两个时,我想在 VBA 正则表达式上匹配。

例如,“desert (cake, pie)”应该匹配,但“desert (pumpkin, sweets(cake, pie))”不应该匹配。

但是,此模式匹配上述两个搜索字符串:

   regex.Pattern = LCase("desert") & ".*\(.*" & searchString

有没有办法告诉它我只有一个完全匹配,如果有两个,那就不好了?我认为问题是 .* 正在吞噬第二个。

4

2 回答 2

0

如果我正确理解你的例子,那么你可以使用一个简单的字符类来实现这一点。

[^()]*\([^()]*\)

=>

regex.Pattern = LCase("desert") & [^()]*\([^()]*\) & searchString

...将寻找一个开始的括号,然后是任意数量的非括号字符,然后是一个结束的括号。由于该模式在中间寻找非括号字符,因此您的要求应该得到满足。

于 2013-03-22T21:26:31.833 回答
0

是的,你只需要告诉它在第一个括号之后不匹配左括号:

regex.Pattern = LCase("desert") & ".*\([^\(]*" & searchString
于 2013-03-22T21:27:01.257 回答