用于验证媒体文件的正则表达式
本文关键字:正则表达式 媒体文件 验证 用于 | 更新日期: 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/