正则表达式匹配之间的字符串列表

Ada*_*tan 1 python regex

如何在正则表达式模式之间找到所有字符串?例如,

>>> s="123 asd 12 456 sfd g 789"
>>> reg=re.compile("\d{3}")
>>> reg.findall(s)
['123', '456', '789']
Run Code Online (Sandbox Code Playgroud)

我想找到:

[' asd 12 ', ' sfd g ']
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

使用该.split()方法代替.findall():

>>> reg.split(s)
['', ' asd 12 ', ' sfd g ', '']
Run Code Online (Sandbox Code Playgroud)

它包括匹配之间的所有结果,包括开头和结尾的空字符串.你可以过滤掉那些:

>>> filter(None, reg.split(s))
[' asd 12 ', ' sfd g ']
Run Code Online (Sandbox Code Playgroud)

虽然在Python 3上你需要使用list(filter(None, reg.split(s)))或迭代结果filter().