我有这个字符串:
(3 + 5)*(1 + 1)
我想匹配这些字符串:
(3 + 5)
和
(1 + 1)
我用它来尝试匹配它:
(\(.*\))
但是从第一个(到最后一个)匹配整个字符串。
关于如何解决此问题的任何想法/使其正常工作?
答案 0 :(得分:4)
有两种方法可以看:
*
,我想要不情愿*?
(\(.*?\))
.
,而不是[^)]
,而不是)
。
(\([^)]*\))
请注意,两者都不能很好地处理嵌套括号。大多数正则表达式引擎都很难处理任意嵌套的parantheses,但在.NET中你可以使用balancing groups definition。
答案 1 :(得分:1)
使用非贪婪的比赛,即
(\(.*?\))
答案 2 :(得分:0)
如果您不关心嵌套括号,请使用
(\([^()]*\))
# ^^^^^
以避免匹配组内的任何(
或)
。
答案 3 :(得分:0)
怎么样
([^*]+)