即時尋找一個正則表達式來檢查,或者是電視節目或只是一部電影在"24.S01E01.DVDRip.XviD-FoV.avi"
正則表達式顯示
舉例S01E01
搜索,所以我
bool check = Regex.IsMatch(filename, "^(*[a-z][A-Z][0-9].){*}S\\d\\dE\\d\\d(*[a-z][A-Z][0-9].){*}")
但它看起來並不像視覺工作室那麼高興... 確實有任何問題嗎?
即時尋找一個正則表達式來檢查,或者是電視節目或只是一部電影在"24.S01E01.DVDRip.XviD-FoV.avi"
正則表達式顯示
舉例S01E01
搜索,所以我
bool check = Regex.IsMatch(filename, "^(*[a-z][A-Z][0-9].){*}S\\d\\dE\\d\\d(*[a-z][A-Z][0-9].){*}")
但它看起來並不像視覺工作室那麼高興... 確實有任何問題嗎?
快樂下載..
foundMatch = Regex.IsMatch(SubjectString, @"^.*S\d\dE\d\d", RegexOptions.IgnoreCase);
啊,現在我明白了。你想知道爲什麼你的正則表達式不工作..嗯..
(*[a-z][A-Z][0-9].)
這是錯誤的。
你不能讓量詞指向任何東西。這裏*
貪婪地匹配0到n次沒什麼..錯誤。
([a-z][A-Z][0-9].)
這意味着匹配一個字母從a-z後跟一個字母從A-Z後跟一個數字從0-9其次是任何東西。所以你正在尋找aA1#或其他東西。你大概真的打算寫爲:\w*
它匹配0到A-ZA-Z0-9_] n次
{*}
也是錯的..匹配{
多次儘可能其次}
?請參閱上文,瞭解您的真正含義。
\\d\\d
也錯了。你的意思是匹配一個數字,但你實際上在這裏搜索的是\
,後面跟着字母d
。
等我建議你開始閱讀一些regex教程。
;也許有點晚,但這應該工作。
我有更多我可以分享的內容,但這應該足以讓你開始。
對於這個表達式,該展會應該是在格式爲:
Show.Name.S01E02.Source.Quality.Etc組
展會名稱 - S01E02 - 我的EP名稱
Show.Name.S01.E03 .My.Ep.Name
Show.Name.S01E02E03.Source.Quality.Etc組
展會名稱 - S01E02-03 - 我的EP名稱
Show.Name.S01.E02.E03
var filename = "";
string Standard = @"^((?<series_name>.+?)[. _-]+)?s(?<season_num>\d+)[. _-]*e(?<ep_num>\d+)(([. _-]*e|-)(?<extra_ep_num>(?!(1080|720)[pi])\d+))*[. _-]*((?<extra_info>.+?)((?<![. _-])-(?<release_group>[^-]+))?)?$";
對於這個正則表達式,該節目應採用以下格式:
Show.Name.1x01.etc
顯示名稱 - 1x02
ShowName S01E01
string Fov = @"^((?<series_name>.+?)[\[. _-]+)?(?<season_num>\d+)x(?<ep_num>\d+)(([. _-]*x|-)(?<extra_ep_num>(?!(1080|720)[pi])(?!(?<=x)264)\d+))*[\]. _-]*((?<extra_info>.+?)((?<![. _-])-(?<release_group>[^-]+))?)?$"
var regexStandard = new Regex('insert fov or standard here', RegexOptions.IgnoreCase);
Match episode = regexStandard.Match(filename);
var Showname = episode.Groups["series_name"].Value;
var Season = episode.Groups["season_num"].Value;
var Episode = episode.Groups["ep_num"].Value;
Console.WriteLine(Showname + " " + Season + " " + Episode);
Console.ReadLine();
嗯,這看起來很合法... – Clive
它爲什麼重要,如果*的Visual Studio *是 「快樂」 與您正則表達式? –
我的意思是它不起作用... – jorne