使用C#正则表达式解析域名?
我需要从字符串中解析域名。 字符串可以变化,我需要确切的域。
字符串示例:
https://somename.de/ www.somename.de/ somename.de/ somename.de/somesubdirectory www.somename.de/?pe=12
如果适用的话,我只需要域名, tld
和www
就可以使用以下格式:
www.somename.de
我如何使用C#做到这一点?
我用的很简单
Uri uri = new Uri("https://www.google.com/search?q=439489"); string url = uri.Host.ToString(); return url;
因为通过使用这个你可以肯定。
作为正则表达式解决方案的替代方法,您可以让System.Uri
类为您解析字符串。 您只需确保该字符串包含一个方案。
string uriString = "https://www.google.com/search"; if (!uriString.Contains(Uri.SchemeDelimiter)) { uriString = string.Concat(Uri.UriSchemeHttp, Uri.SchemeDelimiter, uriString); } string domain = new Uri(uriString).Host;
此解决方案还会过滤掉任何端口号,并将IPv6地址转换为其规范forms。
我查看了正则表达式库 ,它看起来像这样的东西可能适合你:
^(([w][w-.]*).)?([w][w-]+)(.([w][w.]*))?$
试试这个:
^(?:w+://)?([^/?]*)
这是一个弱的正则表达式 – 它不validation字符串,但假设它已经是一个url,并获得第一个单词,直到第一个斜杠,而忽略协议。 要让域查看第一个捕获的组,例如:
string url = "https://www.google.com/hello"; Match match = Regex.Match(url, @"^(?:w+://)?([^/?]*)"); string domain = match.Groups[1].Value;
作为奖励,它还会捕获到第一个?
,所以urlgoogle.com?hello=world
将按预期工作。
上述就是C#学习教程:使用C#正则表达式解析域名?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1027748.html