Python正则表达式可在文本字符串中查找算术表达式

我尝试在文本字符串中找到算术表达式。

可能的算术表达式:

1/3 + 1/4
cos(30) + 25*3,75
sqrt(5) + sin(45)
5 != 6
2**4 + 100.000 =
(2^3)^4
sqrt((0,25*8)/2)
3e4 - 500

我创建了一个正则表达式,并在块之间使用了|符号。

pattern = '((\s*(sqrt|a?sin|a?cos|a?tan|abs|log|log10|exp)?\s*)* | (\s*[e0-9,.()\-]+\s*)* | (\spi\s*)* | (\s*[-+*/%^<>!=]*\s*)*)(\s*\=?\s*)?'

我真正想要的是所有块都可以按任何顺序互换使用。

我该怎么做?使用|符号不起作用。

qw12c 回答:Python正则表达式可在文本字符串中查找算术表达式

使用递归正则表达式的示例

([\d,.e]+|(cos|sin|sqrt)\((?R)\)|\([ ]*(?R)[ ]*\))([ ]*[-+*\/!=^]+[ ]*(?R))*

可以改进以更加严格地匹配运算符或数字

  • (?R)递归引用整个正则表达式
本文链接:https://www.f2er.com/3151803.html

大家都在问