Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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#Regex,我怎样才能逃脱_C#_Regex - Fatal编程技术网

c#Regex,我怎样才能逃脱

c#Regex,我怎样才能逃脱,c#,regex,C#,Regex,我试图用正则表达式实例化一个新的Regex类 var reg=new Regex(“[”+token.Key+“]]”) 但是我得到了以下错误 System.ArgumentException:'按相反顺序分析“[[Impact]]”-[x-y]范围。 如何在正则表达式中用双方括号实例化新类?只需用括号转义每个括号,如下所示: var reg = new Regex("[[[["+ token.Key +"]]]]"); 试一试 例如,如果token.Key等于“Impact”,则它将匹配[[

我试图用正则表达式实例化一个新的
Regex

var reg=new Regex(“[”+token.Key+“]]”)

但是我得到了以下错误

System.ArgumentException:'按相反顺序分析“[[Impact]]”-[x-y]范围。


如何在正则表达式中用双方括号实例化新类?

只需用括号转义每个括号,如下所示:

var reg = new Regex("[[[["+ token.Key +"]]]]");
试一试

例如,如果
token.Key
等于
“Impact”
,则它将匹配
[[Impact]]

var reg = new Regex(@"\[\[" + token.Key + @"]]");

(注意:实际上不需要第二个@)

更新: 这甚至更好:

var reg = new Regex($@"\[\[{token.Key}]]");

您可以使用内置函数来转义:

var re = Regex.Escape("[[") + token.Key + Regex.Escape("]]");
var reg = new Regex(re);
但是您可能还想转义
令牌.Key


或者只使用
字符串。Contains(…)
,如果您不想使用正则表达式的特殊功能。

您需要为正则表达式转义字符“[”和“]”,如果您使用“\”转义括号,则还需要转义C#字符串中的字符

这意味着它可以是:

"\\[\\[" + key + "]]"


您不需要转义后一个“]”,因为如果前面没有未转义的“[”字符,正则表达式会将它们识别为普通字符。我在(正则表达式测试网站)上尝试过,其他答案也表明了这一点。

您是否尝试过
“\\[\\[”+token.Key+“\\]\\]”
?首先,有趣的是,我没有遇到这样的例外。另一方面,你想实现什么?你想让正则表达式以文本形式匹配[[和]]吗?是的,它不起作用。我会试试
\\[\\[
然后看看是什么happens@ZorgoZ是的,这就是我想要的。@ZorgoZ根据我的反对票,这不是一个真正的反对票,但信息量很大,但它可能是您正在使用的不同风格的正则表达式。这个扩展名叫什么?这个屏幕截图是一个LinqPad片段。
.Dump
是它的一部分,但这是一些东西类似:@vc74是的,我已经注意到,正如您所看到的,显然,结束括号集不需要转义。我在regexpal上尝试过:@ManuelHoffmann是的,检查转义字符串也会显示出这一点。但是当它们不是已知的文本时,您可能希望安全。当然,这是绝对正确的。我只是如果有人不知道的话,我会放弃它。谢谢,每个人都有很好的答案,但这一个给出了一个解释。
"\\[\\[" + key + "]]"
@"\[\[" + key + "]]"
Regex.Escape("[[") + key + "]]"