[英]Use String.Format to create regular expression
本質上,我有一個用於插值的字符串: Log_{0}.txt
,而{0}
在另一個過程中被替換為整數。 因此結果可能類似於Log_123.txt
或Log_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.