数値に一致する正規表現を含む小さなコード スニペットがあり、その後にオプションのテキストが角かっこで囲まれ、文字「A」で終わります。例は
preg_match_all("/([0-9]+)(?:\[(.*)\])?A/", "123[SomeText]A345[SomeOtherText]A678A", $matches);
print_r($matches);
期待される結果は、3 つの一致があることです。
Array
(
[0] => Array
(
[0] => 123[SomeText]A
[1] => 345[SomeOtherText]A
[2] => 678A
)
[1] => Array
(
[0] => 123
[1] => 345
[2] => 678
)
[2] => Array
(
[0] => SomeText
[1] => SomeOtherText
[2] =>
)
)
上記のコードは 2 回しか一致しませんが、
Array
(
[0] => Array
(
[0] => 123[SomeText]A345[SomeOtherText]A
[1] => 678A
)
[1] => Array
(
[0] => 123
[1] => 678
)
[2] => Array
(
[0] => SomeText]A345[SomeOtherText
[1] =>
)
)
指定された正規表現で何が間違っているのかわかりません。正規表現を修正するための提案は大歓迎です。