使用正则表达式(在python中)获取数学表达式(单个字母,数字,方程式...)

时间:2018-07-20 09:47:58

标签: python regex

我是regex的新手,并且想使用regex匹配字符串中的数学表达式(在我的python程序中)。对于我(现在)来说,数学表达式是单个字母,数字和方括号之间的表达式。所以例如给定句子(= string)

  

在表达式中让变量a中的f(a)为100   [[f(a)= a + 1]]。

我想得到类似的东西:

  

[f(a),a,100,f(a)= a + 1]

我设法得到

1,方括号中的表达式使用[[(。*?)]]
2,使用\ b [0-9a-zA-Z] {1} \ b和
的单个字母和数字 3,数字一般用\ d +

,但不能使用一个正则表达式来获取所有内容。

有人可以为您提供合适的正则表达式模块的帮助,还是以pythonic的方式解决此问题会更好?

2 个答案:

答案 0 :(得分:1)

这将捕获不考虑括号(?<=\[)[^\[]*?(?=\])

的数学表达式

regex101此处查看演示

要获取带有数学表达式的python列表,可以使用以下代码:

p = re.compile('(?<=\[)[^\[]*?(?=\])')

p.findall('YOUR TEXT HERE')

答案 1 :(得分:0)

最后我明白了。谢谢大家!你让我开心。

那是我的正则表达式:

'(?<=[ ][[]{2}).*?(?=[]]{2}[ .!?])|\d+|\b[a-zA-Z0-9{+-}]*\([a-zA-Z0-9{+-}]*\)|\b[a-zA-Z]\b'