我知道如何在使用 RegEx 的其他语言中执行此操作,但我不确定 Python。基本上我想做的是转换
(30(5-10x))+10=20
进入
(30*(5-10x))+10=20
如果能加上
(30*(5-10*x))+10=20
如果 x 前面有数字。
在 Perl 中,正则表达式看起来像
/ \w+\K (?=\() | \)\K (?=\w) | \)\K (?=\() /*/
并照顾 x:
/\d\K(?=[x])/*/
这在 Python 中如何最好地完成?
请您参考如下方法:
我更喜欢它,就像 Nate 所做的那样,即只需添加 *,而不是将周围的字符取出然后再将它们放回去。
>>> e = '(1+2)(30(5-10x))x+10=20'
>>> re.sub('(?<=\w|\))(?=\() | (?<=\))(?=\w) | (?<=\d)(?=x)', '*', e, flags=re.X)
'(1+2)*(30*(5-10*x))*x+10=20'
这三个部分是“之前(”),“之后)”,“数字和x之间”。可能会合并,但那样我们可能会合并太多,所以我觉得这样更清晰、更安全。
