簡體   English   中英

使用String.Format創建正則表達式

[英]Use String.Format to create regular expression

本質上,我有一個用於插值的字符串: Log_{0}.txt ,而{0}在另一個過程中被替換為整數。 因此結果可能類似於Log_123.txtLog_53623432.txt

我正在嘗試使用string.Format()並將{0}替換為檢查數字的正則表達式。 最終,我也希望能夠提取這些數字。

我已經嘗試過一些類似的變體,但是我沒有任何運氣:

var stringFormat = new Regex(string.Format("Log_{0}.txt", @"^\d$"));

另外,這是檢查格式的代碼:

        var fileNameFormat = new Regex(string.Format("Log_{0}.txt", @"^\d+$"));

        var existingFiles = Directory.GetFiles("c:\\projects\\something");

        foreach(var file in existingFiles)
        {
            var fileName = Path.GetFileName(file);
            if(fileNameFormat.Match(fileName).Success)
            {
                // do something here
            }              
        }

問題出在您的正則表達式中。 ^聲明行的開始, $聲明行的結束。 只需將其替換為@"\\d+" ,它應該可以工作。

(可選)您可以使用new Regex(string.Format("^Log_{0}.txt$", @"\\d+")); 以確保沒有匹配asdffff_Log_13255.txt.temp之類的文件。

您可能忘記了加號+量詞?

+量詞-匹配一次和無限次,盡可能多地匹配,並根據需要返回(貪婪)

var stringFormat = new Regex(string.Format("Log_{0}.txt", @"^\d+$"));

暫無
暫無

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

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