2013-03-22 36 views
0

我有一个字符串,我想在VBA正则表达式中匹配一个中间括号,但不是两个。VBA正则表达式限制为单个字符

例如,“沙漠(蛋糕,派)”应该匹配,但是“沙漠(南瓜,糖果(蛋糕,派))”不应该匹配。

然而,这种模式匹配上述两种搜索字符串:

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

有没有办法告诉它我只是一个只有一个匹配,并且如果有两个,那不好吗?我认为问题在于。*正在吞噬第二个。

回答

0

如果我正确理解您的示例,那么您可以使用简单的character class来实现此目的。

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

=>

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

...会寻找一个开口的括号,然后任意数量的非括号字符,接着闭合括号。由于模式在中间寻找非paren字符,因此您的要求应该得到满足。

0

是的,你只需要后,第一个把这件事告诉匹配左括号:

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