首页 > 解决方案 > 正则表达式将两个或多个转义转换为单个转义,仅将一个转义转换为两个转义

问题描述

我正在尝试找到解决此问题的正则表达式。哪个是

  1. 检查字符串是否有单个反斜杠“\”,然后将其转换为双反斜杠“\”
  2. 检查一个字符串是否有两个或多个连续的反斜杠转换为双反斜杠。

谁能帮我想出一个模式。我知道如何检查一个字符串是否有两个以上的反斜杠

/\\\\\\+/g

但是我不确定如何检查第二种情况。还有一种方法可以将两者结合起来

例子

ab\\\cd\应该ab\\cd\\

a\cd\\\\\\\e\应该a\\cd\\e\\

简而言之,任何连续斜杠 1 或 n 都应替换为两个。

更新:对不起,不好的例子。我没有使用代码格式,所以我的示例没有正确显示

标签: c#regex

解决方案


我认为问题是询问如何用单个反斜杠替换两个或多个反斜杠的任何实例,因此根据 OP 的问题:

ab\\cd\ becomes ab\cd\
a\cd\\\\e\ becomes a\cd\e\

试试这个代码,它将任何有两个或多个反斜杠的匹配替换为一个:

private string DoReplace(string input)
{
    return Regex.Replace(input, @"\\+", @"\");
}

测试:

Console.WriteLine(DoReplace(@"ab\\cd\"));
Console.WriteLine(DoReplace(@"a\cd\\\\e\"));

输出:

ab\cd\
a\cd\e\

在评论中编辑以下双反斜杠讨论

在关于可能想要输出双反斜杠的 OP 评论之后,以下修改后的正则表达式将实现这一点(注意\\现在的双精度作为替换文本):

private string DoReplace(string input)
{
    return Regex.Replace(input, @"\\+", @"\\");
}

输出:

ab\\cd\\
a\\cd\\e\\

推荐阅读