2024-03-29 04:39:19 发布
网友
我想解析方程,得到一个元组列表。 例如,当我进入
2x = 4+3y,
我想得到
[('', '2', 'x', '='), ('','4','',''), ('+','3','y','')]
到目前为止,这是我的正则表达式:
([+-]*)([0-9]+)([a-z]*)([<=>]*)
对于上面的查询,它可以很好地工作,但是它不捕获像
2 = x +3y,(其中x没有任何系数)
2 = x +3y
我该如何捕捉?你知道吗
(\d*)(\w*) *(=) *(\d*)(\w*) *[+|\-|*|/] *(\d*)(\w*)
这个正则表达式怎么样?你知道吗
它分隔所有操作数和运算符。(在操作数内部,它还拆分数字和变量)。你知道吗
为了测试regex,我通常使用https://regex101.com/,这样就可以在那里构建带有实时更改的regex。
如果你把系数上的量词从+(一个或多个)改为*(零个或多个),那么你应该得到你想要的结果。由于现在所有的量词都是*,您还将得到一个空字符串匹配,但是您可以过滤掉该匹配。你知道吗
+
*
>>> import re >>> e1 = "2x=4+3y" >>> e2 = "2=x+3y" >>> re.findall("([+-]*)([0-9]*)([a-z]*)([<=>]*)", e1) [('', '2', 'x', '='), ('', '4', '', ''), ('+', '3', 'y', ''), ('', '', '', '')] >>> re.findall("([+-]*)([0-9]*)([a-z]*)([<=>]*)", e2) [('', '2', '', '='), ('', '', 'x', ''), ('+', '3', 'y', ''), ('', '', '', '')]
注意:虽然这解决了你的直接问题,但这不是解析中缀方程的好方法。你知道吗
这个正则表达式怎么样?你知道吗
它分隔所有操作数和运算符。(在操作数内部,它还拆分数字和变量)。你知道吗
为了测试regex,我通常使用https://regex101.com/,这样就可以在那里构建带有实时更改的regex。
如果你把系数上的量词从
+
(一个或多个)改为*
(零个或多个),那么你应该得到你想要的结果。由于现在所有的量词都是*
,您还将得到一个空字符串匹配,但是您可以过滤掉该匹配。你知道吗注意:虽然这解决了你的直接问题,但这不是解析中缀方程的好方法。你知道吗
相关问题 更多 >
编程相关推荐