VBA正则表达式限制为单个字符

时间:2013-03-22 21:22:14

标签: regex vba

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

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

=>

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

...会寻找一个开场白,接下来是任意数量的非paren角色,接着是一个关闭的paren。由于模式在中间寻找非paren字符,因此应满足您的要求。

答案 1 :(得分:0)

是的,你必须告诉它匹配第一个后的左括号:

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