将Python re.sub转换为C#

时间:2016-01-09 00:17:11

标签: c# python regex

我正在尝试从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组匹配。

1 个答案:

答案 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