Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可以在正则表达式中放置字符串变量吗?_C#_.net_Regex - Fatal编程技术网

C# 可以在正则表达式中放置字符串变量吗?

C# 可以在正则表达式中放置字符串变量吗?,c#,.net,regex,C#,.net,Regex,可以在正则表达式中放置字符串变量吗?如果是的话。。怎样 我已经玩了4个小时的正则表达式了,我只需要再完成一件事 return (new Regex(@"\bA=(\d+[/]\d+)").Match(From).Groups[1].Value.Trim()).ToString(); 这一行基本上得到任何分数,如42/13,只要它在字符串的“A=”之后,并将其提取出来。 所以我的问题是,有没有可能这样做: string variable; Regex(@"\b"variable"=(\d+[/]

可以在正则表达式中放置字符串变量吗?如果是的话。。怎样 我已经玩了4个小时的正则表达式了,我只需要再完成一件事

return (new Regex(@"\bA=(\d+[/]\d+)").Match(From).Groups[1].Value.Trim()).ToString();
这一行基本上得到任何分数,如42/13,只要它在字符串的“A=”之后,并将其提取出来。 所以我的问题是,有没有可能这样做:

string variable;
Regex(@"\b"variable"=(\d+[/]\d+)").Match(From).Groups[1].Value.Trim()).ToString();
这样做的目的是使变量中的任何内容都成为正则表达式,例如,如果在变量中输入D,则现在是D=A=


提前感谢。

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

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

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

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

如果使用反斜杠而不转义,则需要像往常一样连接字符串(
+
),并在每个字符串前面加上
@
。您也不需要将字符类中的
/
封装为
[/]
。或者,罗恩·拜尔(Ron Beyer)在你问题下方的评论中,你可以使用插值

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

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

您需要像往常一样连接字符串(
+
)如果使用反斜杠而不转义,则在每个字符串前面加上
@
。您也不需要将字符类中的
/
封装为
[/]
。或者,罗恩·拜尔(Ron Beyer)在你问题下方的评论中,你可以使用插值

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

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

您需要将
@
添加到每个字符串中,并按照常规进行连接:
@“\b”+变量+@”=(\d+/\d+)
。您也不需要将
/
封装为
[/]
,只需按字面意思使用即可。还要注意的是,您应该使用里面的字符串对变量进行转义,您可以执行类似于
Regex($@“\b{variable}=(\d+[/]\d+)
@ctwheels谢谢,这正是我想要的,然后是一些。太快了。再次感谢。您需要将
@
添加到每个字符串中,并按照常规进行连接:
@“\b”+变量+@”=(\d+/\d+)
。您也不需要将
/
封装为
[/]
,只需按字面意思使用即可。还要注意的是,您应该使用里面的字符串对变量进行转义,您可以执行类似于
Regex($@“\b{variable}=(\d+[/]\d+)
@ctwheels谢谢,这正是我想要的,然后是一些。太快了。再次感谢。我想这也行,谢谢。Regex.Escape(variable)@MikaTähtinen更新,谢谢。我想这也行,谢谢。Regex.Escape(variable)@MikaTähtinen更新,谢谢。如果变量包含Regex构造怎么办<代码>变量='[AD]?'这就是为什么我提到OP应该使用
Regex.Escape()
方法。我的答案的最后一段提到了这一点?如果变量包含正则表达式构造怎么办<代码>变量='[AD]?'这就是为什么我提到OP应该使用
Regex.Escape()
方法。我回答的最后一段提到了这一点?