【问题标题】:Regex for Parsing Tweets for Links用于为链接解析推文的正则表达式
【发布时间】:2010-10-24 14:38:58
【问题描述】:

我在一条推文中发现了一个链接,我当前的正则表达式无法解析,而且我似乎无法弄清楚如何让它工作(可能是由于我对正则表达式的无能)。

这是当前代码:

preg_match_all('@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@',$description, $matches, PREG_SET_ORDER);

以及无法解析的推文:

亚马逊:14 天贷款即将到来 Kindle“今年晚些时候”。 http://usat.me?128426

是 usat.me 链接搞砸了。有什么想法吗?

【问题讨论】:

    标签: php regex twitter


    【解决方案1】:
    ((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?((/)?([-\w/_\.]*(\?\S+)?)?)*)
    

    试试看。应该管用。将 / 修改为 (/)?意味着最后一个斜杠应该出现 0 或 1 次。

    【讨论】:

      【解决方案2】:

      你可以在这里试试,至少对我有用:

      http://www.spaweditor.com/scripts/regex/

      你可以试试这个正则表达式:

      (?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))
      

      【讨论】:

      • 不知道那个网站,谢谢。不幸的是,它仍然返回 usat.me 而不是完整的 URL。
      • 谢谢,但测试工具正在反击:“未知修饰符'\'”
      • 漂亮的无限页面。如果您想快速检查某些内容,那就太好了。但你真的应该尝试正则表达式教练weitz.de/regex-coach,它很简洁。为您提供表达式的树表示和逐步执行,这对于测试字符串可能非常有趣。它还提供了一个替换引擎,用于测试 modrewrite 中使用的替换字符串;-)
      猜你喜欢
      • 1970-01-01
      • 2010-09-05
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2010-12-13
      • 2011-09-02
      相关资源
      最近更新 更多