当前位置: 首页 > 面试题库 >

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

何兴邦
2023-03-14
问题内容

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

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

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

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

(\ [。+ \])

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

任何帮助将是巨大的:)

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


问题答案:

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

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



 类似资料:
  • 问题内容: 匹配字符串中的’(’的正则表达式是什么? 以下是场景: 我有一串 我想使用正则表达式拆分字符串。为此,我正在使用 但是我收到以下异常。 转义似乎不起作用。 问题答案: 两种选择: 首先,你可以使用转义 回 斜线- 另外,由于它是单个字符,因此您可以将其放入不需要转义的字符类中-

  • 问题内容: 是否有单个正则表达式可以解析表示简单布尔运算的字符串(在Python和/或Javascript中,不必是同一表达式)?例如我想解析这个字符串: 假定: 括号不嵌套 术语a,b,…,z不是子表达式 生成的捕获应首先按括号分组,然后再使用相同或更简单的正则表达式对其进行解析。 我已经成功地编写了一个天真的正则表达式来解析不带括号的布尔运算。 有任何想法吗? 问题答案: 通常,您将使用递归下

  • 我有一个非常好的正则表达式,它从文本中选择引用: 但是我需要一个正则表达式,它从没有引号的文本中选择引号。 例如,我有: 鲸鱼包括八个现存的家族:“鲸豚科”(白鲸),“鲸豚科”(露脊鲸),“鲸豚科”(侏儒露脊鲸),“白鲸科”(灰鲸),“独角鲸科”(白鲸和独角鲸),“抹香鲸科”(抹香鲸)。。。 我需要在引号之间提取文本: 龟甲翅目,龟甲翅目,龟甲翅目,... 要提取括号之间的文本,我使用正则表达式:

  • 我正在使用这段代码使用正则表达式拆分字符串 该代码适用于我拥有的几乎所有字符串,但我面临着这两个字符串的问题:和。似乎模式不匹配,我认为是因为特殊字符和。 我的预期结果和。

  • 本文向大家介绍正则表达式匹配括号外的符号及数据,包括了正则表达式匹配括号外的符号及数据的使用技巧和注意事项,需要的朋友参考一下 正则表达式匹配括号外的符号 [\\?!/\\.,\\s]+(?=[^\\)]*(\\(|$)) 将括号外的?!/.,和空格(连续多个时同时)匹配 如 结果: sdfsdf sdlfksd sdf fsdf&sdf(s:1,g:1) sdfsd sdf sdfl asdf

  • 我需要通过不在括号中的管道拆分文本。这是示例文本 我在这里找到了这个/\ |(?![^{]*})/g:regex,提取字符串,不要在两个括号之间 现在当我想用管子分割这部分字符串时 它还选择杰森、玛丽亚和圣诞老人之间的管道,因为它们后面有一个开口支架。如果正则表达式不在任何括号中,如何将其更改为仅匹配管道。 测试字符串: 应该返回 . 应该返回