Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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#_Regex - Fatal编程技术网

正则表达式在c#字符串中转义

正则表达式在c#字符串中转义,c#,regex,C#,Regex,我正在用c#运行这个正则表达式: 这就是我想要匹配的: {"secret":"xxx","encrypted":"xxxgggxxx"} 因为它需要在c#中进一步逃逸,我尝试了以下方法: var test = Regex.Match(html, "\\{\\\"secret\\\":\\\"(.*?)\\\",\\\"encrypted\\\":\\\"(.*?)\\\"\\}"); 但它给了我0个匹配项。什么是避开引号和大括号的正确方法?我已经在在线测试仪中测试了regex,它应该可以工

我正在用c#运行这个正则表达式:

这就是我想要匹配的:

{"secret":"xxx","encrypted":"xxxgggxxx"}
因为它需要在c#中进一步逃逸,我尝试了以下方法:

 var test = Regex.Match(html, "\\{\\\"secret\\\":\\\"(.*?)\\\",\\\"encrypted\\\":\\\"(.*?)\\\"\\}");
但它给了我0个匹配项。什么是避开引号和大括号的正确方法?我已经在在线测试仪中测试了regex,它应该可以工作。

试试这个

string strRegex = @"{""secret"":""(.*?)"",""encrypted"":""(.*?)""}";    
string strTargetString = @"{""secret"":""xxx"",""encrypted"":""xxxgggxxx""}";
var test = Regex.Match(strTargetString, strRegex ):

如果你要在一个字符串中转义很多字符,你可以用@来超越转义的需要:把它想象成“Capslock for escaping”不使用正则表达式。使用JSON.NET。我开始了这条路。但同样的情况也适用于var模式=@“\\{\\\\”secret\\”:\\”(.*?\\”,\\“加密的”:\“(.*?\”,\”ThomasSegato,这样就不需要对正则表达式的花括号或双引号进行转义。但是,当使用逐字记录字符串时,您只需使用另一个双引号来转义双引号,如
@“我不需要转义a\,但这就是转义“”的方式,并且您的正则表达式是这样工作的。是使用
Regex.Match(html,“\\{\\\\”secret\\\”:\\\\”(.*?\\”,\\\\“encrypted\\”:\\\”(.*?\\\”)
时的结果。谢谢大家,非常感谢。
string strRegex = @"{""secret"":""(.*?)"",""encrypted"":""(.*?)""}";    
string strTargetString = @"{""secret"":""xxx"",""encrypted"":""xxxgggxxx""}";
var test = Regex.Match(strTargetString, strRegex ):