【发布时间】:2012-06-19 16:02:40
【问题描述】:
我有一些以特定语法命名的 MP3 文件,例如:
1 - Sebastian Ingrosso - 呼唤(壮举 Ryan Tedder)
我用 C# 编写了一个小程序,它从 ID3 标签中读取曲目、艺术家和标题。我想做的是编写一个正则表达式,它可以验证文件实际上是用上面列出的语法命名的。
所以我有一个类叫song:
//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;
}
所以它在大多数情况下都有效。我在标题中有 (Feat. ) 的那一刻失败了。我能想到的最接近的是:
\d\s-\s\艺术家\s-\s.*
这显然行不通,因为任何文本都可以通过测试,我已经尽了最大努力,但我只编程了两个星期。
tl;dr 希望歌曲通过正则表达式测试,无论它是否包含精选艺术家,例如:
1 - Sebastian Ingrosso - 呼唤(壮举 Ryan Tedder)
和
1 - 弗洛里达 - 口哨
都应该通过测试。
【问题讨论】:
-
aaah cummmon 伙计们 :( 我才编程 2 周,帮助新手 :D,我真的退出了,这是我的第一个工作程序!!!!
-
+1 好问题。显示您正在尝试做什么以及您已经完成了什么。还有助于指出新用户的一个常见错误 - 忘记(或不知道)转义正则表达式中的字符。