我有一个正则表达式,我试图将一个变量传递给:
int i = 0;
Match match = Regex.Match(strFile, "(^.{i})|(godness\\w+)(?<=\\2(\\d+).*?\\2)(\\d+)");
Run Code Online (Sandbox Code Playgroud)
我希望正则表达式引擎解析{i}
为i
变量保存的数字。
我这样做的方式不起作用,因为当文本包含匹配的子字符串时,我没有得到匹配项。
不清楚您想将哪些字符串与正则表达式匹配,但如果您需要在模式中使用 vriable,您可以轻松地在逐字字符串文字中使用字符串插值。在声明正则表达式模式时,最好使用逐字字符串文字,以避免过度转义。
由于仅在 C#6.0 中引入了字符串插值,因此您可以使用string.Format
:
string.Format(@"(^.{{{0}}})|(godness\w+)(?<=\2(\d+).*?\2)(\d+)", i)
Run Code Online (Sandbox Code Playgroud)
否则,从 C#6.0 开始,这似乎是一个更好的选择:
int i = 0;
Match match = Regex.Match(strFile, $@"(^.{{{i}}})|(godness\w+)(?<=\2(\d+).*?\2)(\d+)");
Run Code Online (Sandbox Code Playgroud)
正则表达式模式看起来像
(^.{0})|(godness\w+)(?<=\2(\d+).*?\2)(\d+)
^^^
Run Code Online (Sandbox Code Playgroud)