Python RE library String Split 但保留 delimiters/separators 作为下一个字符串的一部分

Python RE library String Split but keep the delimiters/separators as part of the next string

我见过类似的问题,但其中 none 似乎对我正在尝试做的事情有帮助,并且我花了很长时间尝试通过 RE 文档来工作,但到目前为止没有运气。

我目前正在拆分字符串

my str = 'a+0b-2a+b-b'
re.split(r'([+-])', my_str)

它给了我列表中的字符串和分隔符

['a', '+', '0b', '-', '2a', '+', 'b', '-', 'b']

但我希望分隔符(+ 或 -)包含在下一个字符串中,而不是作为单独的项目。所以结果应该是:

['a', '+0b', '-2a', '+b', '-b']

感谢任何帮助

试试 re.findall:

my_str = 'a+0b-2a+b-b'
re.findall(r'([+-]?[^+-]*)', my_str)

输出:

['a', '+0b', '-2a', '+b', '-b', '']

如果您使用的是 python 3.7+,您可以使用 re.split 和正向前看按零长度匹配拆分:

string = 'a+0b-2a+b-b'
re.split(r'(?=[+-])', string)

# ['a', '+0b', '-2a', '+b', '-b']

演示:https://regex101.com/r/AB6UBa/1