RegEx для анализа тегов ID3 - PullRequest
0 голосов
/ 19 ноября 2008

Я делаю 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

Ответы [ 2 ]

4 голосов
/ 19 ноября 2008

Это потому, что ваша строка никогда не будет соответствовать регулярному выражению, которое вы используете.

Регулярное выражение ожидает число вместо # и число вместо 'faixa'

Попробуйте это, например:

"[coletanea] album [CD 20] [89] [artista] musica.mp3"

Если вы хотите разрешить использовать любой символ вместо цифр, замените \ d для. в группах 3 и 4

1 голос
/ 19 ноября 2008

Ну, ваша строка не соответствует регулярному выражению (поскольку '#' и 'faixa' не являются цифрами), попробуйте использовать эту строку, ведь я предполагаю, что это строка, которую вы получите из системы:

"[coletanea] album [CD 1] [1] [artista] musica.mp3"

Также немного странно называть группы захвата такими номерами, потому что группы будут именоваться, начиная с 0 по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...