繁体   English   中英

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

[英]capturing repeating groups with reg ex in python

例如 “史蒂夫&&克里斯||乔&&乔治”

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

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

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

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

非Regex解决方案可以使用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解决方案快

也许最好的方法是只使用Python split函数:

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']

如果您打算使用regexregex可以使用以下命令:

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

演示

您也可以为此使用python split功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM