1

データ:

今日13/9:アリステイデス、アリステイデス、アリステイデス、コルネリオス、コルニリオス、コルネリア(出典:www.namedays.gr)

正規表現パターン:

/(?:today \d{1,2}\/\d{1,2}\s\:\s)([\w[:blank:],]+)(?:\s\(source\s\:\swww\.namedays\.gr\))/

結果:

Array
(
    [0] => today 13/9 : Aristides, Aristeides, Aristeidis, Kornelios, Kornilios, Kornelia (source : www.namedays.gr)
    [1] => Aristides, Aristeides, Aristeidis, Kornelios, Kornilios, Kornelia
)

私の質問は、なぜ私のパターンが名前-> Array [1]だけで返されないのか、そしてなぜ私の結果のArray[0]に非キャプチャグループも含めるのかということです。

私はそれを把握することはできません。Array[1]だけを期待しています。

4

2 に答える 2

3

3番目の0キャプチャグループには、一致するテキスト全体が常に含まれます。最初のキャプチャグループは常に$1(または名前付き)です。

それが問題であるならば、あなたはいつでもunset()それをすることができます。

于 2012-09-13T07:04:24.620 に答える
1

すべてが正しいです。0番目のグループは、グループに関係なく常に一致全体であり、1番目のグループは最初のキャプチャグループの結果です。

たとえば、preg_matchdocを参照してください。

一致するものが提供されている場合は、検索結果で埋められます。$ matches [0]には完全なパターンに一致するテキストが含まれ、$matches[1]には最初にキャプチャされた括弧で囲まれたサブパターンに一致するテキストが含まれます。

于 2012-09-13T07:06:39.713 に答える