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我怎么能提取组 所需的输出的其他内容:@livingleondre
,Leondre 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)
既然没有需要转义[...]
内的任何内容,并且可以省略单个字符周围的[...]
。