[英]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']
而且它也是动态的
>>> 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']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.