正则表达式问题,匹配整个字符串而不是部分

时间:2010-10-20 06:35:44

标签: c# regex

我有这个字符串:

  

(3 + 5)*(1 + 1)

我想匹配这些字符串:

  

(3 + 5)

  

(1 + 1)

我用它来尝试匹配它:

(\(.*\))

但是从第一个(到最后一个)匹配整个字符串。

关于如何解决此问题的任何想法/使其正常工作?

4 个答案:

答案 0 :(得分:4)

有两种方法可以看:

  • 而不是贪婪的重复*,我想要不情愿*?
    • 即。 (\(.*?\))
  • 我需要.,而不是[^)],而不是)
    • 即。 (\([^)]*\))

请注意,两者都不能很好地处理嵌套括号。大多数正则表达式引擎都很难处理任意嵌套的parantheses,但在.NET中你可以使用balancing groups definition

相关问题

参考

答案 1 :(得分:1)

使用非贪婪的比赛,即

(\(.*?\))

答案 2 :(得分:0)

如果您不关心嵌套括号,请使用

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

以避免匹配组内的任何()

答案 3 :(得分:0)

怎么样

([^*]+)