簡體   English   中英

將動態值傳遞給 C# 正則表達式中的量詞

[英]Passing a dynamic value to quantifier in C# regex

我有一個正則表達式,我試圖將一個變量傳遞給:

int i = 0;  
Match match = Regex.Match(strFile, "(^.{i})|(godness\\w+)(?<=\\2(\\d+).*?\\2)(\\d+)");

我希望正則表達式引擎將{i}解析為i變量保存的數字。

我這樣做的方式不起作用,因為當文本包含匹配的子字符串時,我沒有得到匹配項。

不清楚您想將哪些字符串與您的正則表達式匹配,但如果您需要在模式中使用 vriable,您可以輕松地在逐字字符串文字中使用字符串插值 在聲明正則表達式模式時,最好使用逐字字符串文字,以避免過度轉義。

由於僅在 C#6.0 中引入了字符串插值,因此您可以使用string.Format

string.Format(@"(^.{{{0}}})|(godness\w+)(?<=\2(\d+).*?\2)(\d+)", i)

否則,從 C#6.0 開始,這似乎是一個更好的選擇:

int i = 0;
Match match = Regex.Match(strFile, $@"(^.{{{i}}})|(godness\w+)(?<=\2(\d+).*?\2)(\d+)");

正則表達式模式看起來像

(^.{0})|(godness\w+)(?<=\2(\d+).*?\2)(\d+)
   ^^^

你可以試試這個概念,你可以使用 i 作為參數並輸入 i 的任何值。

int i = 0;
 string Value =string.Format("(^.{0})|(godness\\w+)(?<=\\2(\\d+).*?\\2)(\\d+)",i);
 Match match = Regex.Match(strFile, Value);

暫無
暫無

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

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