2013-03-22 18 views
0

我有一個字符串,我想在VBA正則表達式中匹配一箇中間括號,但不是兩個。VBA正則表達式限制爲單個字符

例如,「沙漠(蛋糕,派)」應該匹配,但是「沙漠(南瓜,糖果(蛋糕,派))」不應該匹配。

然而,這種模式匹配上述兩種搜索字符串:

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

有沒有辦法告訴它我只是一個只有一個匹配,並且如果有兩個,那不好嗎?我認爲問題在於。*正在吞噬第二個。

回答

0

如果我正確理解您的示例,那麼您可以使用簡單的character class來實現此目的。

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

=>

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

...會尋找一個開口的括號,然後任意數量的非括號字符,接着閉合括號。由於模式在中間尋找非paren字符,因此您的要求應該得到滿足。

0

是的,你只需要後,第一個把這件事告訴匹配左括號:

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