我正在尝试使用正则表达式实例化一个新的Regex
类
var reg = new Regex("[[" + token.Key + "]]");
但是我遇到了以下错误
System.ArgumentException: 'parsing "[[Impact]]" - [x-y] range in reverse order.'
如何在正则表达式中使用双方括号实例化新类?
答案 0 :(得分:4)
您可以使用内置函数来转义:
var re = Regex.Escape("[[") + token.Key + Regex.Escape("]]");
var reg = new Regex(re);
但是您可能还想逃脱token.Key
?
如果您不希望正则表达式的特殊功能,也可以使用string.Contains(...)
。
答案 1 :(得分:3)
您需要对正则表达式的字符“ [”和“]”进行转义,如果您使用“ \”对括号进行转义,那么也需要对C#字符串中的字符进行转义。
这意味着它可以是:
"\\[\\[" + key + "]]"
或
@"\[\[" + key + "]]"
或
Regex.Escape("[[") + key + "]]"
您不需要转义后一个“]”,因为如果在它们前面没有未转义的“ [”,则Regex会将它们识别为普通字符。我在Regexpal(正则表达式测试网站)上进行了尝试,其他答案也表明了这一点。
答案 2 :(得分:2)
此作品有效:
var reg = new Regex(@"\[\[" + token.Key + @"]]");
(注意:实际上不需要第二个@)
更新: 更好:
var reg = new Regex($@"\[\[{token.Key}]]");
答案 3 :(得分:1)
只需将每个括号都用括号括起来,如下所示:
var reg = new Regex("[[[["+ token.Key +"]]]]");
答案 4 :(得分:1)
尝试
var reg = new Regex("[[][[]" + token.Key + "[]][]]");
它将匹配,例如[[Impact]]
等于token.Key
的{{1}}。