【发布时间】:2016-01-16 08:44:57
【问题描述】:
我想从这样的列表中提取歌曲名称:'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']
有没有办法在一行中完成这项工作?在这里简明扼要会很有用。谢谢。
【问题讨论】:
标签: python regex python-2.7