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

标签 c# regex parsing url

我正在解析一个 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/

相关文章:

iPhone : How to get each element from QR code vCard?

Java 匹配单个单词,可以用空格分隔,也可以不用空格分隔

JavaScript 正则表达式匹配文本字段中的 URL

jquery - 获取 url 路径?

c# - 对象转字符串出错

c# - 连接 null 以查找缺失的元素

C#数据库检索信息

c# - 将字符串拆分为具有特定数量元素的数组,c#

Javascript 正则表达式和方括号

python - 使用 RegEx 解析 NOAAPORT feed