在python中使用reg ex捕获重复组

时间:2015-06-16 17:07:18

标签: python regex

实施例。 "史蒂夫&&克里斯||乔&&乔治"

Group[0] = steve && chris 
Group[1] = joe && george

我可以找到第一组(。*?)([|] {2})但是如何找到下一组。

请记住,我希望它是动态的。字符串将以相同的模式增长。 对于Ex。

"steve && chris || joe && george || sep && geo"

3 个答案:

答案 0 :(得分:3)

非正则表达式解决方案可以使用str.split

>>> s = "steve && chris || joe && george"
>>> tmp = s.split('||')
>>> groups = map(str.strip,tmp)
>>> groups
['steve && chris', 'joe && george']

此处使用mapstr.strip来清理群组

它也是动态的

>>> s =  "steve && chris || joe && george || sep && geo"
>>> tmp = s.split('||')
>>> groups = map(str.strip,tmp)
>>> groups
['steve && chris', 'joe && george', 'sep && geo']

请注意,基本字符串函数的运行速度比RegEx解决方案

答案 1 :(得分:2)

也许最好的方法就是使用Python拆分功能:

s = 'steve && chris || joe && george'
s.split(' || ')  # returns ['steve && chris', 'joe && george']

但是,要使用正则表达式,您可以执行以下操作:

import re
# group all strings separated by `|` and at least length 1
arr = re.findall('[^|]{1,}', "steve && chris || joe && george || sep && geo")
print(arr)  # ['steve && chris ', ' joe && george ', ' sep && geo']

答案 2 :(得分:1)

如果您打算使用regex,可以使用以下内容:

(\w*\ ?&&\ ?\w*)

DEMO

您也可以使用python split函数。