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
谁能看看这个,告诉我出了什么问题?
这是正常的:regex中的点表示任何字符。
因此,.me
在NameCheap
中匹配ame
。
用反斜杠转义点
同样,您最好使用专用的URI API来进行此类操作。
我知道这不能直接回答你的问题,但是考虑到你要完成的具体任务,我建议你尝试这样做:
Uri uri = new Uri(originalDomain);
originalDomain = uri.Host;
编辑:如果你的输入可能不包含一个方案,你可以使用在这篇文章中提到的uri构建器
var hostName = new UriBuilder(input).Host