我想删除字符串中/
和\
的所有外观,如果它使用正则表达式连续出现两次以上。这意味着,如果字符串包含abc////////////////////////def
,我希望删除所有/
。但是,它不应删除/
中的http://
。
有人可以建议吗?
答案 0 :(得分:3)
您可以使用/{3,}
,它会匹配3个或更多/
个字符。
var result = Regex.Replace("abc///def", "/{3,}", "");
更新:要回复您的评论,*
字符是正则表达式中的元字符,具有特殊含义,因此您需要将其转义。试试这个:\*{3,}
。如果要组合两个字符,可以使用字符类:[/*]{3,}
。字符类用方括号表示。在一个字符类中你不需要转义元字符,这就是为什么我只是在里面列出*
而不像我之前那样转义它。
答案 1 :(得分:0)
使用negative look-behind assertion:
@"(?<!https?:)/{2,}|\\{2,}"
例如:
Regex pattern = new Regex(@"(?<!https?:)/{2,}|\\{2,}");
Console.WriteLine(pattern.Replace(@"http://example.com", ""));
Console.WriteLine(pattern.Replace(@"abc//////////def", ""));
Console.WriteLine(pattern.Replace(@"abc\\\\\\\\\\def", ""));
打印
http://example.com
abcdef
abcdef