当前位置: 首页 > 知识库问答 >
问题:

用正则表达式表示数学方程

邹晟睿
2023-03-14

我在试着把一个等式字符串分解成令牌。我找到了一个很好的起点'([A-Za-z]+[0-9.]+[&=><\!]+\s)'。但是,这对于负数有问题:

turns: '5--4=sin(2+3)'
into: ['5','-','-','4','=','sin','(','2','+','3',')']
want: ['5','-','-4','=','sin','(','2','+','3',')']

而且还

turns: -3+3
into: ['-','3','+','3']
want: ['-3','+','3']

看起来my regex可以使用一些东西来检查'-'的左边是否有一个数字,如果没有,就用下一个数字保持它(注意'-3'的左边没有任何东西)。可以使用正则表达式完成吗?或者在.NET中有更好的工具将其拆分?

共有1个答案

隗轶
2023-03-14

Regex的功能不够强大,无法在所有上下文中执行您想要的操作。虽然您可以使regex将+-识别为整数文字的一部分,例如,通过在数字序列前面添加可选的[+-]?,但生成的regex将选择将'-3+3'标记为['-3','+3'](演示)。

使用lexer生成器应该可以解决这个问题;或者,您可以在解析器中处理一元运算符与其操作数的“捆绑”。

 类似资料:
  • 问题内容: 我想识别整数或十进制以及四个简单的操作,分为令牌我无法使十进制起作用,请您帮忙吗? 我的注册表是 给我 编辑:正确的结果将是 问题答案: 您可以尝试删除所有空格,然后在字符之前或之后的每个位置拆分数据 。 这应该可以解决问题 输出量

  • 本文向大家介绍学习JavaScript正则表达式,包括了学习JavaScript正则表达式的使用技巧和注意事项,需要的朋友参考一下 JavaScript正则表达式学习: 有个在线调试正则的工具。下面的所有示例代码,都可以在codepen上查看到。 1.创建正则表达式 1)正则表达式字面量在脚本加载后编译。若你的正则表达式是常量,使用这种方式可以获得更好的性能。 2)使用构造函数,提供了对正则表达式

  • 问题内容: 我正在尝试使用运算符-+ * /将正则表达式拆分为1.5 + 4.2 *(5 + 2)等式,以便将输出输入到数组中,以便我可以单独解析 我发现可以使用,但是如果我要保留小数点,它将不会拆分。 我已经尝试过分割,但是它不会在小数点上分割 问题答案: 您还可以使用?:避免捕获组。我把它简化了。

  • 主要内容:简单表达式,字符匹配,实例,实例,匹配 HTML 标签及内容,实例,中括号表达式,替换和分组,其他示例,更多实例简单表达式 正则表达式的最简单形式是在搜索字符串中匹配其本身的单个普通字符。例如,单字符模式,如 A,不论出现在搜索字符串中的何处,它总是匹配字母 A。下面是一些单字符正则表达式模式的示例: 可以将许多单字符组合起来以形成大的表达式。例如,以下正则表达式组合了单字符表达式:a、7 和 M。 请注意,没有串联运算符。只须在一个字符后面键入另一个字符。 字符匹配 点号 . 匹配字

  • 我不熟悉Javascript和正则表达式,所以我一直在研究如何使路由匹配所有以

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?