我有一个带有正则表达式的小代码片段来匹配一个数值,后跟一个可选的方括号中的文本,以字符“A”结尾。一个例子是
preg_match_all("/([0-9]+)(?:\[(.*)\])?A/", "123[SomeText]A345[SomeOtherText]A678A", $matches);
print_r($matches);
并且预期的结果是三个匹配项:
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] =>
)
)
而上面的代码只匹配了两次:
Array
(
[0] => Array
(
[0] => 123[SomeText]A345[SomeOtherText]A
[1] => 678A
)
[1] => Array
(
[0] => 123
[1] => 678
)
[2] => Array
(
[0] => SomeText]A345[SomeOtherText
[1] =>
)
)
在给定的正则表达式中,我看不到我做错了什么。欢迎任何有关修复正则表达式的建议。