我需要提取编号列表的内容。请检查以下网址:https://regex101.com/r/oS0yT5/1
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)
上面的代码返回第一个匹配:@livingleondre
使用x.group(2)返回No such group error
。
如上面给出的url所示,我如何提取该组的其他内容
期望的输出:@livingleondre
,Leondre and Charlie
答案 0 :(得分:3)
您需要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)
由于不需要在[...]
内转义任何内容,您可以在单个字符周围省略[...]
。