将 split 与 findall 结合起来

Ore*_*lom 5 python split python-re

我正在用一些分隔符分割字符串,但希望分隔符也匹配

import re

s = "oren;moish30.4.200/-/v6.99.5/barbi"
print(re.split("\d+\.\d+\.\d+", s))
print(re.findall("\d+\.\d+\.\d+", s))
Run Code Online (Sandbox Code Playgroud)

我找不到一种简单的方法来合并我得到的两个列表:

['oren;moish', '/-/v', '/barbi']
['30.4.200', '6.99.5']
Run Code Online (Sandbox Code Playgroud)

进入所需的输出:

['oren;moish', '30.4.200', '/-/v', '6.99.5', '/barbi']
Run Code Online (Sandbox Code Playgroud)

use*_*ica 4

来自re.split 文档

如果在模式中使用捕获括号,则模式中所有组的文本也会作为结果列表的一部分返回。

因此,只需将正则表达式包装在捕获组中即可:

print(re.split(r"(\d+\.\d+\.\d+)", s))
Run Code Online (Sandbox Code Playgroud)