0

複雑な環境で URL を一致させる正規表現パターンが必要です。

URL は次の位置にあります。

[url=http://www.php.net/manual/en/function.preg-replace.php:32p0eixu]TEST[/url:32p0eixu]

(これは単なるサンプル URL です)

コロン、コロン、およびその後のコードが無視されるまで、URL を一致させる必要があります。非常に多くの URL があり、http://から:までのすべてに一致するパターンを作成する経験はありません。

先ほど言ったように、変数に格納する必要がある URL を除いて、他のすべては無視してそのままにしておく必要があります。

誰かがそのようなパターンを作成するのを手伝ってくれませんか? 私の試行では上記の URL と一致していましたが、より複雑な URL を入力すると一致しませんでした。

これは私が作成したパターンです。単純な URL では機能しますが、複雑な URL では機能しません。

http(s)?://[A-Za-z0-9.,/_-]+

私は正規表現があまり得意ではありません。まだ学習中です。

ありがとうございました。

4

3 に答える 3

0

これはどう: ^(http(s)?:\/\/)?[^]^(^)^ ]+

于 2013-09-04T16:12:18.330 に答える
0

以下の正規表現は、コロンの前の URL 部分を示します。

\[url=((http|https)?://)?[^\:]+
于 2013-09-04T16:09:08.153 に答える
0

この正規表現はあなたのためにそれをするはずです。

\[url=(.*?):[a-zA-Z0-9]*\]

テスト データに対して実行します。

[url=http://www.php.net/manual/en/function.preg-replace.php:32p0eixu]TEST[/url:32p0eixu]

これにより、キャプチャ グループ 1 の URL が返されます。

PHP を想定すると (テスト URL は PHP マニュアル用であるため)、これをpreg_match次のように使用します。

$value = "[url=http://www.php.net/manual/en/function.preg-replace.php:32p0eixu]TEST[/url:32p0eixu]";
$pattern = "/\[url=(.*?):[a-zA-Z0-9]*\]/";
preg_match($pattern, $value, $matches);
echo $matches[1];

出力:

http://www.php.net/manual/en/function.preg-replace.php

これは、次のようなコロンを含む URL に対しても機能します。

http://www.php.net:8080/manual/en/function.preg-replace.php
http://www.php.net/manual/us:en/function.preg-replace.php
于 2013-09-04T16:09:58.103 に答える