2012-04-28 7 views
2

申し訳ありませんが、フォーマットが間違っていますが、どのようにこの質問をよりうまく説明するかわかりません。例を挙げる:一致するグループを使って何かをマッチングさせたいが、マッチングのためにグループを使用したいが、そのグループをPHPのpreg_match。このようなクエリの例を次に示します。正規表現でグループを使用することは可能ですか?

(([^0-9^\n]+)*([^0-9^\n^ ]+)) 

スペースを含む文と一致しますが、末尾にスペースはありません。あなたが見ることができるように、それは1つのアウトターグループ(私が結果として望む)とそれの中の2つのグループを使用します。これらの内部グループを、同じ仕事をする、あるいは何らかの形で結果データとは関係ないものにタグ付けすることができますか?あなたはnon-capturing subpatternsを使用する必要が

おかげ

答えて

7

は、プレーン括弧は2つの機能を果たすという事実は、常に便利ではありません。キャプチャの必要がなければ、グループ化サブパターンが必要なことがよくあります。開始括弧に "?:"が続く場合、サブパターンはキャプチャを行わず、後続のキャプチャサブパターンの数を計算する際にはカウントされません。あなたの正規表現に適用

、それは次のようになります。

/((?:[^0-9^\n]+)*(?:[^0-9^\n^ ]+))/ 
+0

1を絶対にまさに私が探していたものを、感謝万人を – Hubro

関連する問題