re.split 参数不像指南所说的那样工作?


x="3x^2+2x-1"
x=re.split(r"[^]|([-])|[+]", x)
print(x)
#returns: ['3x', None, '2', None, '2x', '-', '1']

我认为它应该返回类似['3x','2','2x','-','1']的内容。对不起,我肯定我只是误会了。谢谢!

用于拆分的正则表达式模式中有一个捕获组,但它只包括减号运算符。只需在捕获组内的角色类([^*/+-])上进行拆分。这将在任何运算符上进行拆分,但也将在输出列表中包括该运算符。

x = "3x^2+2x-1"
x = re.split(r"([^*/+-])", x)
print(x)  # ['3x', '^', '2', '+', '2x', '-', '1']
x = [y for y in re.split(r"[^]|([-])|[+]", x) if y != None]

我不是RegEx向导,但你可以删除所有Nones。

最新更新