Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正则表达式(python)获取数学表达式(单个字母、数字、方程…)_Python_Regex - Fatal编程技术网

使用正则表达式(python)获取数学表达式(单个字母、数字、方程…)

使用正则表达式(python)获取数学表达式(单个字母、数字、方程…),python,regex,Python,Regex,我不熟悉正则表达式,希望(在我的python程序中)使用正则表达式匹配字符串中的数学表达式。数学表达式对我来说(现在)是单字母、数字和方括号之间的表达式。例如,对于给定的句子(=字符串) 让变量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+ ,但不是用一个正则表达式获取所有内容。

我不熟悉正则表达式,希望(在我的python程序中)使用正则表达式匹配字符串中的数学表达式。数学表达式对我来说(现在)是单字母、数字和方括号之间的表达式。例如,对于给定的句子(=字符串)

让变量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}).*?(?=[]]{2}[ .!?])|\d+|\b[a-zA-Z0-9{+-}]*\([a-zA-Z0-9{+-}]*\)|\b[a-zA-Z]\b'

”(?对于您的示例数据,您肯定可以使用正则表达式来解决此问题,但您可能还希望了解解析数学表达式的方法。我有一些问题:
f(a)
不在括号内。这是打字错误吗?应该匹配吗?同样,像
这样的句子会发生什么情况?我有一个名为v的变量,它可能同时匹配“v”和“a”。是的,f(a)也应该匹配。我现在使用\b[a-z]*([a-z]*)。因为我使用德语匹配v和a是可以的。谢谢@Jorge。这几乎完美。只有一件事:在两个方括号之间应该只有匹配的(非空)表达式。这在python中与
…re.compile(')(?
'(?<=[ ][[]{2}).*?(?=[]]{2}[ .!?])|\d+|\b[a-zA-Z0-9{+-}]*\([a-zA-Z0-9{+-}]*\)|\b[a-zA-Z]\b'