【问题标题】:I need a regex that will pull a URL from a text document我需要一个从文本文档中提取 URL 的正则表达式
【发布时间】:2011-11-29 05:25:24
【问题描述】:

我试图提取的网址都是 www.domain.com 的格式。我想用一个简单的正则表达式从文本文档中提取它们。它只需要匹配 www.domain.com,而不是其他 url 变体。

与 preg_match_all() 一起使用的最简单的正则表达式是什么?

【问题讨论】:

标签: php regex


【解决方案1】:
/w{3}\.\w{2,}\.\w{3}/

这将匹配 www. 任何超过两个字母 dot + 3 个字母的单词

用连字符或大写字母匹配域:

/w{3}\.[\w\-]{2,}\.\w{3}/i

【讨论】:

  • 这个正则表达式找不到类似 www.do-main.com 的东西
  • 如果它也能找到这种格式可能会有所帮助......尽管这确实满足了我最初的要求。
【解决方案2】:

我对 PHP 做的不多,但正则表达式类似于:

w{3}.([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?

将返回所有以“www.”开头的域名。它将忽略标签的协议部分(例如http://

【讨论】:

    【解决方案3】:
    preg_match_all('%((mailto\\:|(news|(ht|f)tp(s?))\\://){1}\\S+)%m', $subject, $result, PREG_PATTERN_ORDER);
    for ($i = 0; $i < count($result[0]); $i++) {
        // $result[0][$i];
    }
    

    如果您想轻松提取部分 url,也可以使用我编写的 https://github.com/homer6/altumo/blob/master/source/php/String/Url.php 类。使用方法见同目录下的单元测试。

    如果您正在寻找一个好的程序来调整您的正则表达式模式,我强烈推荐regexbuddy

    希望对您有所帮助...

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 2021-08-21
      • 2019-09-14
      • 1970-01-01
      • 2011-04-26
      • 2017-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多