[英]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.