2011-12-07 12 views
1

PHPの正規表現で繰り返しグループをキャプチャしようとしています。Regexで繰り返しグループをキャプチャするPHP

私が使用している式は次のとおりです。(?:.*\s|^)@\[(\d+)\]、のようなものを一致させることになる:

some text here @[2] some more textと試合で2を返します。

some text here @[2] some more text @[3] more textと戻り、[2、3]:

今、私は一致したいと思います。今のところ、私はこの式で最後の要素3を返すことしかできません:(((?:.*\s|^)@\[(\d+)\])+)

私はthisthisを読みましたが、preg_matchまたはpreg_match_allで動作するものを取得できませんでした。

これに関するご意見はありがとうございます。

答えて

1

私はこの簡単な解決策を提案:

$string = 'some text here @[2] some more text @[3] more text'; 
preg_match_all('/@\[(\d+)\]/', $string, $matches); 
$matches = $matches[1]; 
$result = '[' . implode(', ', $matches) . ']'; 
echo $result; // [2, 3] 
+0

は、このソリューションのためにありがとうございました。私は@が何をするのか分からない、あなたはこれを説明できますか? –

+0

@TimvanDalen特別なものはありません。最初に「@」を付けて「[」と「]」の間の数字だけを必要とすると思ったからです。 –

+0

もちろん、そのコメントは無視してください。私はあなたが特別な演算子を使ったと思っています。ありがとうございました。 –

関連する問題