Python正则表达式组搜索仅返回第一个匹配

问题描述:

我需要提取编号列表的内容。使用x.group(2)返回No such group error@livingleondre:请检查下面的网址:https://regex101.com/r/oS0yT5/1Python正则表达式组搜索仅返回第一个匹配

string = @BarsAndMelody #3thingsthatmakeyousmile #1) @livingleondre #2) Leondre and Charlie #3) chocolate ☺️ please notice me it's my birthday 

以下代码仅提取第一匹配:

p = re.compile("(?<=[#\s][\d][\)\.\:][\s])(.*?)(?=[#][\d][\)\.\:][\s])") 
x = p.search(string) 
x.group(1) 

上面的代码返回的第一个匹配。 如图上面给出url我怎么能提取组 所需的输出的其他内容:@livingleondreLeondre and Charlie

你需要re.findall找到所有比赛,不仅是第一个:

string = "@BarsAndMelody #3thingsthatmakeyousmile #1) @livingleondre #2) Leondre and Charlie #3) chocolate ☺️ please notice me it's my birthday" 
p = re.findall("(?<=[#\s][\d][\)\.\:][\s])(.*?)(?=[#][\d][\)\.\:][\s])",string) 
print p[0] 
print p[1] 

此外,您可以简化正则表达式是:

(?<=[#\s]\d[).:]\s)(.*?)(?=#\d[).:]\s) 

既然没有需要转义[...]内的任何内容,并且可以省略单个字符周围的[...]