c#中的正则表达式问题

本文关键字:问题 正则表达式 | 更新日期: 2023-09-27 18:15:37

我正在尝试创建一个c#例程,删除所有以下前缀和后缀,并返回一个域的根词:

var stripChars = new List<string> { "http://", "https://", "www.", "ftp.", ".com",  ".net", ".org", ".info", ".co", ".me", ".mobi", ".us", ".biz" };

我用下面的代码来完成:

originalDomain = stripChars.Aggregate(originalDomain, (current, repl) => Regex.Replace(current, repl, @"", RegexOptions.IgnoreCase));

这似乎在几乎所有情况下都有效。然而今天,我发现将"originalDomain"设置为"NameCheap.com"不会返回:

NameCheap

就像它应该的那样,而是:

NCheap

谁能看看这个,告诉我出了什么问题?

c#中的正则表达式问题

这是正常的:regex中的点表示任何字符。

因此,.meNameCheap中匹配ame

用反斜杠转义点

同样,您最好使用专用的URI API来进行此类操作。

我知道这不能直接回答你的问题,但是考虑到你要完成的具体任务,我建议你尝试这样做:

Uri uri = new Uri(originalDomain);
originalDomain = uri.Host;
编辑:

如果你的输入可能不包含一个方案,你可以使用在这篇文章中提到的uri构建器

var hostName = new UriBuilder(input).Host