【发布时间】:2019-11-06 13:30:23
【问题描述】:
我尝试在文本字符串中查找算术表达式。
可能的算术表达式:
1/3 + 1/4cos(30) + 25*3,75sqrt(5) + sin(45)5 != 62**4 + 100.000 =(2^3)^4sqrt((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*)?'
我真正想要的是所有块都可以按任何顺序互换使用。
我该怎么做?使用 | 符号不起作用。
【问题讨论】:
-
我做错了什么Wiktor?
-
IMO 我不认为这是一个简单的问题 - 单独的
|只会返回其中一个子模式,因此仅使用一个正则表达式检测这样的复杂表达式实际上并不可行(除非有可能,您需要一些超长的正则表达式,此时您可能会考虑性能是否会成为问题。) -
我认为 python
re库的表达能力不足以处理任意嵌套的括号表达式。
标签: python regex python-3.x math