【问题标题】:.NET RegEx Patterns (Instagram URL Pattern).NET RegEx 模式(Instagram URL 模式)
【发布时间】:2013-06-22 01:07:47
【问题描述】:

我一直在 MSDN 上阅读有关 .NET 正则表达式的信息。我对这些可能性感到震惊,无言以对。我不知道提取下面 URL 的模式应该是什么。有.NET正则表达式知识的人可以帮忙。谢谢。

这是我尝试在其上使用模式的 URL 示例:

img src="http://distilleryimage4.s3.amazonaws.com/a0a2f13eda3c11e2b7ba22000aaa2161_6.jpg

这些 URL 的唯一常量是 'img src="http://'、'.com'、另一个 '/' 和 '_6.jpg'。中间的其他字符都是字母数字并包含小数'.'。

【问题讨论】:

    标签: .net regex


    【解决方案1】:

    不要使用正则表达式来解析 URL-s,而是使用 System.Uri 类。它具有要读取 URL 的每个部分的属性,并且会正确解析它们。

    如果您开始处理各种不同的可能 URL,正则表达式可能会变得非常复杂,并且您将很难测试所有不同的可能性。

    例如:

    string sUrl = "http://distilleryimage4.s3.amazonaws.com/a0...a2161_6.jpg";
    Uri oUrl;
    
    if ( Uri.TryCreate ( sUrl, UriKind.RelativeOrAbsolute, out oUrl ) )
    {
        // TODO use properties of oUrl to inspect the URL
    }
    

    【讨论】:

    • 我不认为他试图验证或解析 URL,他想从中提取信息,例如子域和图像名称。
    • @LuizDamim 这正是 Uri 类的目的。
    • 你是对的。我从未使用过Uri 类,也不知道这些属性。对不起... :)
    【解决方案2】:

    你可以试试

    var regex = new Regex("http://[\w\d.]*com/[\w\d]*_6.jpg");
    

    用法:

    if (regex.IsMatch(url))
    {
        //your processing here.
    }
    

    不幸的是,没有太多可继续的内容,更多示例以及您需要的 url 会有所帮助。

    【讨论】:

    • @user2510712 不要为此使用正则表达式。或者至少不要单独使用它——这不是正确的解决方案。如果您的 URL-s 是多样化的,您的正则表达式将失败,您将回到原点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多