匹配以指定字词

时间:2015-08-30 20:10:09

标签: regex

我有一个需要排序的网址列表。我会尝试解释我需要的东西。

示例:

http://test56.testdom.com/dev123/85056704/test/test.php?something=else&t=1
http://test14.testdoma.tv/dev234/93181034/test/backup.zip
http://test22.testdomai.me/dev945/23145034/test/test.zip
http://test12.testdomain.co.uk/dev184/95342034/test/random?random=123&stuff=true
http://test76.testdomains.de/dev643/13453534/test/random.zip

我需要一个正则表达式来匹配完整的域名,在以zip结尾的网址中,如下所示:

test14.testdoma.tv
test22.testdomai.me
test76.testdomains.de

基本上如此:"如果有zip,则从test/"匹配。

我怎么写这样的正则表达式?

2 个答案:

答案 0 :(得分:2)

尝试以下正则表达式:

/http:\/\/([^\/ ]+).+\.zip/g

请参阅regex101上的示例。

答案 1 :(得分:1)

在Notepad ++中,您不会像任何编程语言一样获得输出。 但您可以使用查找和替换正则表达式,即:

发现: https?://(.*?)/.*\.zip
替换: $1

以上,将用相应的域名替换所有以zip结尾的网址。

<强>主题:

http://test56.testdom.com/dev123/85056704/test/test.php?something=else&t=1
http://test14.testdoma.tv/dev234/93181034/test/backup.zip
http://test22.testdomai.me/dev945/23145034/test/test.zip
http://test12.testdomain.co.uk/dev184/95342034/test/random?random=123&stuff=true
http://test76.testdomains.de/dev643/13453534/test/random.zip

<强>输出:

http://test56.testdom.com/dev123/85056704/test/test.php?something=else&t=1
test14.testdoma.tv
test22.testdomai.me
http://test12.testdomain.co.uk/dev184/95342034/test/random?random=123&stuff=true
test76.testdomains.de

更新:

使用 JavaScript ,您可以使用此正则表达式:

var myregexp = /https?:\/\/(.*?)\/.*\.zip/img;

PHP

$urls = <<< EOF
http://test56.testdom.com/dev123/85056704/test/test.php?something=else&t=1
http://test14.testdoma.tv/dev234/93181034/test/backup.zip
http://test22.testdomai.me/dev945/23145034/test/test.zip
http://test12.testdomain.co.uk/dev184/95342034/test/random?random=123&stuff=true
http://test76.testdomains.de/dev643/13453534/test/random.zip
EOF;
    preg_match_all('%https?://(.*?)/.*\.zip%im', $urls, $matches, PREG_PATTERN_ORDER);
    for ($i = 0; $i < count($matches[1]); $i++) {
        echo $matches[1][$i];
    }