我想從這樣的列表中提取歌曲名稱:'some text here, songs: song1, song2, song3, fro: othenkl'
並獲得['song1', 'song2', 'song3']
。所以我嘗試做一個正則表達式:正則表達式僅用於匹配某個單詞後面的內容嗎?
result = re.findall('[Ss]ongs?:?.*', 'songs: songname1, songname2,')
print re.findall('(?:(\w+),)*', result[0])
這完全符合:['', '', '', '', '', '', '', 'songname1', '', 'songname2', '']
(除空字符串,但NBD
但我想這樣做在同一行,所以我做的。以下:
print re.findall('[Ss]ongs?:?(?:(\w+),)*','songs: songname1, songname2,')
但我不明白這是爲什麼無法捕捉一樣兩個以上正則表達式:
['', 'name1', 'name2']
有沒有辦法在一行中完成此操作?在這裏簡潔會很有用。謝謝。
所以,我想你仍然有兩步做,即使它是一個班輪。因爲,你仍然需要通過split(',')'將'search'的結果拆分。 – Sother
請注意,如果捕獲組沒有找到任何匹配項,這將失敗:'re.search(...)'將返回'None',對此,上述表達式不再有意義。 – normanius