我希望使用正则表达式解析m3u文件。 m3u看起来像:
#EXTM3U
#EXTINF:36,Artist - Title
C:\Users\Public\Music\Sample Music\file1.mp3
#EXTINF:19,Artist - Title
C:\Users\Public\Music\Sample Music\file2.mp3
#EXTINF:19,Artist - Title (Additional Title)
C:\Users\Public\Music\Sample Music\file3.mp3
#EXTINF:57,Artist - Title - Additional Title
C:\Users\Public\Music\Sample Music\file4.mp3
当我在文本编辑器中打开文件时,m3u全部在一行中,没有换行符。我期待创建两个正则表达式。第一个将解析艺术家和标题信息。正则表达式输出应为:
Artist - Title
Artist - Title
Artist - Title (Additional Title)
Artist - Title - Additional Title
第二个正则表达式应解析相同的信息,但在不同的组中捕获艺术家和标题。正则表达式输出应为:
第1组
Artist
Artist
Artist
Artist
第2组
Title
Title
Title (Additional Title)
Title - Additional Title
感谢任何帮助。
答案 0 :(得分:1)
以下是对第一个问题的快速思考:
#EXTINF:[0-9]+,([a-zA-Z0-9 ]+ - [a-zA-Z0-9 ]+(?: (?:- [a-zA-Z0-9 ]+|\([a-zA-Z0-9 ]+\))))?
这假设艺术家名称和歌曲标题仅由字母,数字和空格组成(即[a-zA-Z0-9]),因此请调整以反映您拥有的歌曲类型和内容想到。
此外,我已经将python表示法用于非捕获组 - (?:) - 您可能需要根据您将使用它来替换它。
从那里,您可以轻松地将上述内容拆分为两个捕获组:
#EXTINF:[0-9]+,([a-zA-Z0-9 ]+) - ([a-zA-Z0-9 ]+(?: (?:- [a-zA-Z0-9 ]+|\([a-zA-Z0-9 ]+\))))?