0

この正規表現/\@[a-z0-9]+/ipreg_match_all()、@az? の最初の出現のみに一致します。

これをphpで使用する:preg_match_all('/\@[a-z0-9]+/i', $input, $matches)

4

3 に答える 3

1

単純なミス?

@これは、 の後に任意の文字が続くすべてのインスタンスに一致します:a-zまたはA-Zまたは0-9(1 回以上)。

また、 here をエスケープする必要はありません@

<?php

$text = <<<T
@fooo
@bar1234
@stackoverflow
T;

preg_match_all('/@[a-z0-9]+/i', $text, $matches);
print_r($matches);
?>

出力

Array
(
    [0] => Array
        (
            [0] => @fooo
            [1] => @bar1234
            [2] => @stackoverflow
        )
)
于 2013-10-31T14:45:02.383 に答える
0

1 つだけの @ に一致し、次に 1 つ以上の文字/数字 (+ のため) に一致します。

あなたの正規表現は、末尾の i で大文字と小文字を区別しません。

したがって、「@a」、「@aaaAAAAzZZeeEErrRttT1234」には一致しますが、「@@aaa」には一致しません。

于 2013-10-31T14:37:39.920 に答える
0

preg_match_all と組み合わせた正規表現は正しいです。よくわからない場合は、簡単なテスト スクリプトを作成してください。

 <?php
 $input = '@a @b';
 preg_match_all('/\@[a-z0-9]+/i', $input, $matches);
 var_dump($matches);
 ?>

より簡単な正規表現が必要な場合は、/@\w+/.

于 2013-10-31T14:41:42.637 に答える