带括号的数学运算的正则表达式

在Java中,我试图编写一个与数学表达式中的一个单元匹配的正则表达式,即运算符之间的内容

我的意思是,在类似1 + [1 + 2]的表达式中,正则表达式应匹配前1个,然后匹配[1 + 2]。

我所拥有的是* [([-+]?\ d +(\。\ d +)?)(\ [。+ \])] *

其中([-+]?\ d +(\。\ d +)?)应该匹配任何数字,并且

(\ [。+ \])

应该匹配括号内的内容,但是不起作用…由于某种原因,它匹配’]’和’‘之类的内容。

任何帮助将是巨大的:)

不幸的是,这是练习的一部分,因此我只能使用基本的Java库…这也意味着它是正则表达式中的练习。我在这里缺少基本的东西吗?

回答:

您找不到带有正则表达式的匹配括号。这是常规语言(正则表达式表示的数学对象)的抽水引理引起的,而对于具有匹配的打开/关闭括号的语言,则不成立。

您至少需要一个无上下文的解析器。这些可以使用ANTLR或JavaCC构建。

以上是 带括号的数学运算的正则表达式 的全部内容, 来源链接: utcz.com/qa/397624.html

回到顶部