我正在尝试从Python转换到C#
sconvert = re.sub(r"([.$+?{}()\[\]\\])", r"\\\1", sconvert)
我找不到与此函数相当的C#.Net来简化它。
来自Python手册
re.sub(pattern,repl,string,count = 0,flags = 0)返回通过替换最左边的非重叠事件获得的字符串 替换repl中的字符串模式。如果找不到模式, string返回不变。 repl可以是字符串或函数;如果 它是一个字符串,其中的任何反斜杠转义都被处理。那就是\ n 转换为单个换行符,\ r \ n转换为a 回车等等。剩下未知的转义符,例如\ j 单独。反序列(例如\ 6)将替换为子字符串 在模式中与第6组匹配。
答案 0 :(得分:1)
您正在寻找Regex.Escape
method:
转义一组最小字符(
\
,*
,+
,?
,|
,{
,{{1} },[
,(
,)
,^
,$
,.
和空格)by用他们的转义代码替换它们。这指示正则表达式引擎按字面解释这些字符而不是元字符。
#
代码会转义sconvert = re.sub(r"([.$+?{}()\[\]\\])", r"\\\1", sconvert)
范围内指定的字符,以匹配它们所代表的字面字符。
请注意,[.$+?{}()\[\]\\]
也会转义空格。如果您不想这样,请使用自定义替换:
Regex.Escape
我建议也添加var input = "|^.$+?{}()[]\\-";
var escaped = Regex.Replace(input, @"[|^.$+?{}()\[\]\\-]", "\\$&");
Console.Write(escaped);
// => \|\^\.\$\+\?\{\}\(\)\[\]\\\-
,|
和-
。见IDEONE demo