我有一些用特定语法命名的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。*
这显然不会起作用,因为任何文本都会通过测试。提前谢谢。
答案 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.*)?";
应该做的工作