如何在正则表达式模式之间找到所有字符串?例如,
>>> 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)
使用该.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().