2016-07-31 51 views
1

我需要提取編號列表的內容。使用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

回答

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) 

既然沒有需要轉義[...]內的任何內容,並且可以省略單個字符周圍的[...]

相關問題