gpt4 book ai didi

带有 URL 的 C# 正则表达式错误

转载 作者:行者123 更新时间:2023-11-30 17:51:23 28 4
gpt4 key购买 nike

我正在解析一个 URL 文件以获取主机和 URI 部分,但是当 URL 未以斜线结尾时会出现错误。

C#代码:

var URL = Regex.Match(link, @"(?:.*?//)?(.*?)(/.*)", RegexOptions.IgnoreCase);

输入:

//cdn.sstatic.net/stackoverflow/img/favicon.ico
/opensearch.xml
http://stackoverflow.com/
http://careers.stackoverflow.com

输出:

//cdn.sstatic.net/stackoverflow/img/favicon.ico has 2 groups:
cdn.sstatic.net
/stackoverflow/img/favicon.ico

/opensearch.xml has 2 groups:

/opensearch.xml

http://stackoverflow.com/ has 2 groups:
stackoverflow.com
/
http://careers.stackoverflow.com has 2 groups:
http:
//careers.stackoverflow.com

输出中的每个 URL 都是有效的,除了:http://careers.stackoverflow.com .我如何检查可变部分,例如“如果有斜杠,请停止到第一个,否则捕获所有内容”。

最佳答案

|$ 添加到最后一组,以匹配该文本或匹配表达式的结尾。

这适用于您的输入:

var links = new[]
{
"//cdn.sstatic.net/stackoverflow/img/favicon.ico",
"/opensearch.xml",
"http://stackoverflow.com/",
"http://careers.stackoverflow.com"
};

foreach (string link in links)
{
var u = Regex.Match(link, @"(?:.*?//)?(.*?)(/.*|$)", RegexOptions.IgnoreCase);
Console.WriteLine(link);
Console.WriteLine(" " + u.Groups[1]);
Console.WriteLine(" " + u.Groups[2]);
Console.WriteLine();
}

输出:

//cdn.sstatic.net/stackoverflow/img/favicon.ico
cdn.sstatic.net
/stackoverflow/img/favicon.ico

/opensearch.xml

/opensearch.xml

http://stackoverflow.com/
stackoverflow.com
/

http://careers.stackoverflow.com
careers.stackoverflow.com

关于带有 URL 的 C# 正则表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19620842/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com