我有以下一行要处理:
...播放列表索引:109 id:38522标题:天堂圣诞节艺术家:B.B。 King album:A Christmas Celebration of Hope播放列表索引:110 id:38523标题:我将成为圣诞节艺术家的家:B.B。 King album:A Christmas Celebration of Hope播放列表索引:111 id:38524标题:给我爱的人艺术家:B.B。 King album:A Christmas Celebration of Hope播放列表索引:112 id:38525标题:Christmas Celebration artist:B.B。 King album:A Christmas Celebration of Hope播放列表索引:113 id:38526标题:圣诞快乐,宝贝艺术家:B.B。国王专辑:圣诞节庆祝活动
我到目前为止最好的模式是:
playlist index:(?<index>\d+) id:(?<id>\d+) title:(?<title>[\w\s',]+) artist:(?<artist>[\w\s'.]+) album:(?<album>[\w\s']+)
但是,它只匹配所有其他一个,因为playlist
(playlist index
)被视为上一个专辑名称的一部分。
答案 0 :(得分:2)
您可以利用积极的前瞻来限制album
部分所需的字符数:
playlist index:(?<index>\d+) id:(?<id>\d+) title:(?<title>[\w\s',]+) artist:(?<artist>[\w\s'.]+) album:(?<album>[\w\s']+)(?= playlist index:|$)
^^^^^^^^^^^^^^^^^^^^^^
它基本上可以确保在比赛结束时,playlist index:
正好在$
之后或者{{1}}行结束。
答案 1 :(得分:-1)
最简单的修复
playlist index:(?<index>\d+) id:(?<id>\d+) title:(?<title>[\w\s',]+) artist:(?<artist>[\w\s'.]+) album:(?<album>[\w\s']+?)(?=$|\splaylist)