0
^(\w+) - (\d+). (.+) \((\d+)\) \[(\w+)]

我创建了以下正则表达式来匹配我用来存储音乐收藏的目录模式。

目录结构的一般模式是这样的

artist - albumnr. albumname (year) [quality]

我正在尝试将艺术家、专辑名称、年份和质量分组。但是,我想清理专辑名称并删除括号内的任何内容或破折号后出现的任何字符串。

例如

  • albumname -blahblah (remastered)- 只会在第三组比赛中返回专辑名称
  • albumname (remastered)- 仍然会返回专辑名称
  • albumname- 即使结果中没有 - 或 backets,正则表达式仍应能够返回专辑名称。
4

1 回答 1

0

这个将匹配albumname -blahblah (remastered)albumname (remastered)但不匹配albumname (remastered) -blahblah

^(\w+) - (\d+)\. (.+?) ?(?:-\w+)? ?(?:\(.*?\))? \((\d+)\) \[(\w+)\]

在这里测试

如果你也想匹配albumname (remastered) -blahblah

^(\w+) - (\d+)\. (.+?) ?(?:-\w+)? ?(?:\(.*?\))? ?(?:-\w+)? \((\d+)\) \[(\w+)\]
于 2012-06-01T13:22:28.807 回答