需要一些帮助来改善我的正则表达式

时间:2012-06-01 12:47:05

标签: regex

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

我创建了以下正则表达式,以匹配我用于存储音乐集的目录模式。

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

artist - albumnr. albumname (year) [quality]

我正在尝试将艺术家,专辑,年份和质量分成小组。但是,我想清理albumname并删除括号内的任何内容或短划线后出现的任何字符串。

e.g。

  • albumname -blahblah (remastered) - 只会在第3组比赛中返回albumname
  • albumname (remastered) - 仍会返回albumname
  • albumname - 正则表达式应该仍然能够返回相册名称,即使结果中没有 - 或者说是支持。

1 个答案:

答案 0 :(得分:0)

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

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

测试here

如果您还想与albumname (remastered) -blahblah

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