簡體   English   中英

正則表達式匹配到標准模式的末尾

[英]Regex match up to the end of a standard pattern

我正在開發一個用於管理下載的電視節目文件名的應用程序。 基本上,它將搜索目錄並清理文件名,刪除句號之類的內容並用空格替換,並以易於識別的方式(例如,S01E13)刪除文件名末尾的描述。 (.1080p.BluRay.x264-ROVERS)

我想做的是制作一個用於C#的正則表達式,以提取SnnEnn之前的所有內容(其中n是任何正整數)。 但是,我不知道太多正則表達式可以幫助我前進

例如,如果我的文件名是TV.Show.S01E01.1080p.BluRay.x264-ROVERS,則查詢將僅獲取TV.Show.S01E01,而不管模式前有多少個單詞,因此它可能是TV.Show。 .On.ABC.S01E01,它仍然可以工作。

謝謝你的幫助 :)

嘗試這個

string input = "TV.Show.S01E01.1080p.BluRay.x264-ROVERS";
            string pattern = @"(?'pattern'^.*\d\d[A-Z]\d\d)";
            string results = Regex.Match(input, pattern).Groups["pattern"].Value;

沒有正則表達式還有更明顯的方法:

string GetNameByPattern(string s)
{
    const string pattern_length = 6; //SnnEnn

    for (int i = 0; i < s.Length - pattern_length; i++)
    {
        string part = s.SubString(i, pattern_length);

        if (part[0] == 'S' && part[3] == 'N') //candidat
            if (Char.IsDigit(part[1]) && Char.IsDigit(part[2]) && Char.IsDigit(part[4]) && Char.IsDigit(part[5])) 
                return s.SubString(0, i + pattern_length);
    }

    return "";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM