我试图通过单个正则表达式解析以下数学表达式:
2(3(4+5)6)7 3(4+5)6
表达式应该返回第一个示例的(3(4+5)6)7和第二个示例的(4+5)6。我创造了这个:
(3(4+5)6)7
(4+5)6
[\(\[].*[\(\]]*\d*
但这只适用于第一种情况。
是否可以为上述情况创建一个正则表达式?
发布于 2020-10-30 19:33:32
您可以匹配第一个(和最后一个),后面跟着可选的数字,并在两者之间指定允许的字符。
(
)
\([\d+()-]+\)\d*
Regex演示
如果可以使用PCRE,则可以匹配平衡括号并匹配可选的尾部数字。
(\((?>[\d+-]|(?1))*\))\d*
https://stackoverflow.com/questions/64612312
相似问题