带括号的数学运算的正则表达式
在Java中,我试图编写一个与数学表达式中的一个单元匹配的正则表达式,即运算符之间的内容
我的意思是,在类似1 + [1 + 2]的表达式中,正则表达式应匹配前1个,然后匹配[1 + 2]。
我所拥有的是* [([-+]?\ d +(\。\ d +)?)(\ [。+ \])] *
其中([-+]?\ d +(\。\ d +)?)应该匹配任何数字,并且
(\ [。+ \])
应该匹配括号内的内容,但是不起作用…由于某种原因,它匹配’]’和’‘之类的内容。
任何帮助将是巨大的:)
不幸的是,这是练习的一部分,因此我只能使用基本的Java库…这也意味着它是正则表达式中的练习。我在这里缺少基本的东西吗?
回答:
您找不到带有正则表达式的匹配括号。这是常规语言(正则表达式表示的数学对象)的抽水引理引起的,而对于具有匹配的打开/关闭括号的语言,则不成立。
您至少需要一个无上下文的解析器。这些可以使用ANTLR或JavaCC构建。
以上是 带括号的数学运算的正则表达式 的全部内容, 来源链接: utcz.com/qa/397624.html