如果字符连续出现两次以上,我想删除所有出现的字符/
和字符串,使用正则表达式。\
这意味着,如果一个字符串包含abc////////////////////////def
,我想全部/
删除。但是,它不应该删除“ /
in http://
.
有人可以建议吗?
您可以使用/{3,}
,它将匹配 3 次或更多次出现的/
字符。
var result = Regex.Replace("abc///def", "/{3,}", "");
更新:回复您的评论,该*
字符是正则表达式中的元字符,具有特殊含义,因此您需要对其进行转义。试试这个:\*{3,}
。如果要组合两个字符,可以使用字符类:[/*]{3,}
. 字符类由方括号表示。在字符类中,您不需要转义元字符,这就是为什么我只是*
在里面列出而不像之前那样转义它。
使用否定的后视断言:
@"(?<!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