RegEx用于验证媒体文件

时间:2012-06-17 18:27:09

标签: c# .net regex

我有一些用特定语法命名的MP3文件,例如:

  

1 - Sebastian Ingrosso - Calling(Feat.Ryan Tedder)

我在C#中编写了一个小程序,它从ID3标签中读取Track,Artist和Title。我想做的是写一个正则表达式,可以验证文件实际上是用上面列出的语法命名的。

所以我有一个叫做歌曲的课程:

class Song
{
    //Fields
    private string _filename;
    private string _title;
    private string _artist;


    //Properties
    public string Filename
    {
        get { return _filename;  }
        set { _filename = value; }
    }

    public string Title
    {
        get { return _title;  }
        set { _title = value; }
    }

    public string Artist
    {
        get { return _artist;  }
        set { _artist = value; }
    }


    //Methods

    public bool Parse(string strfile)
    {
        bool CheckFile;

        Tags.ID3.ID3v1 Song = new Tags.ID3.ID3v1(strfile, true);
        Filename = Song.FileName;
        Title = Song.Title;
        Artist = Song.Artist;


        //Check File Name Formatting
        string RegexBuilder = @"\d\s-\s" + Artist + @"\s-\s" + Title;
        if (Regex.IsMatch(Filename, RegexBuilder))
        {
            CheckFile = true;
        }
        else
        {
            CheckFile = false;
        }
        return CheckFile;
     }

所以它很有效,大部分时间。我在标题中有一个(壮举)它失败了。我能想出的最接近的是:

  

\ d \ s- \ s \ Artist \ s- \ s。*

这显然不会起作用,因为任何文本都会通过测试。提前谢谢。

1 个答案:

答案 0 :(得分:1)

\d\s-\s\Sebastian Ingrosso\s-\sCalling(\s\(Feat.*)?

这适用于两者:

1 - Sebastian Ingrosso - Calling (Feat. Ryan Tedder)
1 - Sebastian Ingrosso - Calling

所以:

string RegexBuilder = @"\d\s-\s" + Artist + @"\s-\s" + Title + "(\s\(Feat.*)?";

应该做的工作

可以尝试http://gskinner.com/RegExr/