我想从这样的列表中提取歌曲名:'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])
这完全匹配:
['', '', '', '', '', '', '', '歌曲名1', '', '歌曲名2', '']
(除了空字符串,但不要紧)。但我想在一行中完成,所以我做了以下操作:
print re.findall('[Ss]ongs?:?(?:(\w+),)*','songs: songname1, songname2,')
但我不明白为什么这不能像上述两个正则表达式一样捕获相同的内容:
['', 'name1', 'name2']
有没有一种方法可以用一行代码完成这个任务?在这里简明扼要很有用。谢谢。
split(',')
从search
的结果中分离出来。 - makansijre.search(...)
将返回None
,对于上述表达式将不再有意义。 - normanius