在 C# 正则表达式中将动态值传递给量词
本文关键字:值传 量词 动态 正则表达式 | 更新日期: 2023-09-27 17:56:02
我有一个正则表达式,我正在尝试将变量传递给:
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);