新爸爸,所以我的眼睛累了,我正在试图弄清楚为什么这个代码:
var regex = new Regex(@"(https:)?\/");
Console.WriteLine (regex.Replace("https://foo.com", ""));
可发出:
foo.com
我只有一个正斜杠,那么为什么两个都被捕获在组中以进行替换?
答案 0 :(得分:4)
在指定的输入字符串中,将所有与正则表达式模式匹配的字符串替换为指定的替换字符串。
每个/
匹配正则表达式模式@"(https:)?\/"
。如果您尝试例如"https://foo/./com/"
,所有/
都将被移除。
答案 1 :(得分:4)
如果您检查生成的匹配项,则会变得清晰。将其添加到您的代码中:
var matches = regex.Matches("https://foo.com");
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
您会发现https:/
已匹配并被替换,/
已匹配并被替换(因为https:
是可选的)并且foo.com
仍然存在。