1

この正規表現を使用していますが、URLとサブドメインが一致していません。

(https?://[^\s]+(?=\.(jpe?g|png|gif))).(jpe?g|png|gif)

マッチ:http://domain.com/folder1/folder2/folder3/image.jpg

合わない:http://sub.domain.com/folder1/folder2/folder3/image.jpg

4

2 に答える 2

1

この正規表現は、JPG、PNG、および GIF 画像の適切な形式の URL (サブドメイン、ポート番号、およびクエリ文字列を含むものを含む) と一致します。

((?:https?\:\/\/)(?:[a-zA-Z]{1}(?:[\w\-]+\.)+(?:[\w]{2,5}))(?:\:[\d]{1,5})?\/(?:[^\s\/]+\/)*(?:[^\s]+\.(?:jpe?g|gif|png))(?:\?\w+=\w+(?:&\w+=\w+)*)?)

PHP の例:

<?php

$str = 'Lorem ipsum http://example.com/img.jpg dolor sit http://www.aaa.cc/this/is/not/an/image.html amet, consectetur http://my.domain.com/path/to/nothing.gif adipiscing elit http://www.imgbucket.com/some/other/image.png';

preg_match_all('@((?:https?\:\/\/)(?:[a-zA-Z]{1}(?:[\w\-]+\.)+(?:[\w]{2,5}))(?:\:[\d]{1,5})?\/(?:[^\s\/]+\/)*(?:[^\s]+\.(?:jpe?g|gif|png))(?:\?\w+=\w+(?:&\w+=\w+)*)?)@', $str, $matches);

print_r($matches[1]);

出力:

Array
(
    [0] => http://example.com/img.jpg
    [1] => http://my.domain.com/path/to/nothing.gif
    [2] => http://www.imgbucket.com/some/other/image.png
)
于 2012-10-17T11:55:30.763 に答える
-1
https?://\w+\.\w+/\S+\.(jpe?g|png|gif)

は、最初の の前の 1 つのドットのみに一致し/ます。

\Sと同じですが、[^\s]短いだけです。

于 2012-10-17T11:57:04.640 に答える