我试图通过单个正则表达式解析以下数学表达式:
2(3(4+5)6)7
3(4+5)6
表达式的第一个示例应返回(3(4+5)6)7
,第二个示例应返回(4+5)6
。我创建了这个:
[\(\[].*[\(\]]*\d*
但仅在第一种情况下如此。
是否可以为上述情况创建一个正则表达式?
答案 0 :(得分:1)
您可以匹配第一个(
和最后一个)
,后跟仅可选数字,并在两者之间指定允许的字符。
\([\d+()-]+\)\d*
如果可以使用PCRE,则可以匹配平衡括号并匹配可选的尾随数字。
(\((?>[\d+-]|(?1))*\))\d*
答案 1 :(得分:0)
虽然@anubhava的评论是相关的,但以下正则表达式应该可以根据我从您的评论中了解的内容来发挥作用。
^(\d\([0-9+\-\(\)]+\)\d?)$