我正在制作一个mp3 id3tag编辑器,正则表达式不匹配。 有人可以帮帮我吗? 我的代码:
arquivo = "[coletanea] album [CD #] [faixa] [artista] musica.mp3"
r = New Regex("^\[(?<1>[^\]]+?)\]\s*(?<2>[\w\s]+)\s*\[CD\s*(?<3>\d+)\]\s*\[(?<4>\d+)\]\s*\[(?<5>[^\]]+)\]\s*(?<6>.+)", RegexOptions.Compiled)
m = r.Match(Mid(arquivo, 1, Len(arquivo) - 4))
If m.Success Then
mAuthor = Trim(m.Groups(5).ToString)
mWM_AlbumTitle = Trim(m.Groups(2).ToString)
mWM_TrackNumber = Trim(m.Groups(4).ToString)
mTitle = Trim(m.Groups(6).ToString)
mWM_PartOfSet = Trim(m.Groups(3).ToString)
mMW_AlbumArtist = Trim(m.Groups(1).ToString)
End If
答案 0 :(得分:4)
那是因为你的字符串永远不会与你正在使用的正则表达式匹配。
正则表达式需要一个数字而不是#和一个数字而不是'faixa'
试试这个,例如:
"[coletanea] album [CD 20] [89] [artista] musica.mp3"
如果您希望允许任何字符而不仅仅是数字,请将\ d替换为。在第3组和第4组
答案 1 :(得分:1)
好吧,你的字符串与正则表达式不匹配(因为'#'和'faixa'不是数字)试试这个字符串女巫我猜是你将从系统获得的字符串:
"[coletanea] album [CD 1] [1] [artista] musica.mp3"
将捕获组命名为这样的数字也有点奇怪,因为默认情况下组的名称将从0开始。