是否可以在正则表达式中放置字符串变量?

时间:2019-12-30 16:39:41

标签: c# .net regex

是否可以在正则表达式中放置字符串变量?如果是这样.. 我已经使用正则表达式玩了四个小时,我只需要完成一件事即可。

return (new Regex(@"\bA=(\d+[/]\d+)").Match(From).Groups[1].Value.Trim()).ToString();

只有从字符串的“ A =”后面提取该行后,该行基本上会获得任何类似于42/13的分数。 所以这是我的问题-是否可以做类似的事情:

string variable;
Regex(@"\b"variable"=(\d+[/]\d+)").Match(From).Groups[1].Value.Trim()).ToString();

这样做的目的是使变量中的任何内容都成为正则表达式,例如,如果在变量中我们输入D,则现在D =现在A =。

谢谢。

2 个答案:

答案 0 :(得分:2)

这是字符串插值。您可以在字符串上使用$运算符来使用它。例子

        string variable = "hello";
        Regex regex = new Regex($@"\b{Regex.Escape(variable)}=(\d+[/]\d+)");

答案 1 :(得分:2)

如果使用反斜杠而不转义,则需要照常连接字符串(+),并在每个字符串前附加@。您也不需要在字符类中将/括为[/]。另外,as mentioned by Josh in his answer和罗恩·拜尔(Ron Beyer)在您的问题下方的评论中,可以使用插值法。

@"\b" + variable + @"=(\d+/\d+)"

另外,您应该对变量使用方法Regex.Escape(),以确保转义了任何特殊字符(这将防止您的模式失败或进行不正确的匹配)-清理变量。