c# - 正则表达式将两个或多个转义转换为单个转义,仅将一个转义转换为两个转义
问题描述
我正在尝试找到解决此问题的正则表达式。哪个是
- 检查字符串是否有单个反斜杠“\”,然后将其转换为双反斜杠“\”
- 检查一个字符串是否有两个或多个连续的反斜杠转换为双反斜杠。
谁能帮我想出一个模式。我知道如何检查一个字符串是否有两个以上的反斜杠
/\\\\\\+/g
但是我不确定如何检查第二种情况。还有一种方法可以将两者结合起来
例子
ab\\\cd\
应该ab\\cd\\
a\cd\\\\\\\e\
应该a\\cd\\e\\
简而言之,任何连续斜杠 1 或 n 都应替换为两个。
更新:对不起,不好的例子。我没有使用代码格式,所以我的示例没有正确显示
解决方案
我认为问题是询问如何用单个反斜杠替换两个或多个反斜杠的任何实例,因此根据 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\\
推荐阅读
- c# - 错误 #CS0738“通知”未实现接口成员“IJob.Execute(IJobExecutionContext)”。'Notification.Execute(IJobExecutionContext)'
- c# - DbUpdateConcurrencyException 和 DbConcurrencyException 有什么区别?
- php - 从递归函数返回数据?
- algorithm - 如何从 lcm(a,b) = c 中找到最小的 b?
- python - super().method() 和 self.method() 有什么区别
- ios - 当应用程序在后台 iOS 11 中时,UNNotification 本地通知用户点击不会触发委托
- unit-testing - 需要帮助查明中间件测试中零引用错误的原因(Golang)
- jenkins - 詹金斯可以检测浏览器类型。如果那么我们如何将它传递给自动化脚本来运行?
- c++ - 在 Windows 10 上安装适用于 C++ 的 tesseract
- mysql - Mysql连接字符串错误ASP