我是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的方式解决此问题会更好?
答案 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'