用于验证媒体文件的正则表达式

本文关键字:正则表达式 媒体文件 验证 用于 | 更新日期: 2023-09-27 18:37:25

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

1 - 塞巴斯蒂安·英格罗索 - 呼唤 (壮举. 瑞安·泰德)

我用 C# 编写了一个小程序,可以从 ID3 标签中读取曲目、艺术家和标题。我想做的是编写一个正则表达式,该表达式可以验证文件实际上是用上面列出的语法命名的。

所以我有一堂课叫 song:

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''艺术家''s

-''s.*

这显然是行不通的,因为任何文本都会通过测试。提前谢谢。

用于验证媒体文件的正则表达式

'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/