我有以下正则表达式:
\[([^ -\]]+)( - ([^ -\]]+))+\]
这个成功地匹配了下面的内容:
[abc - def - ghi - jkl]
但是匹配结果是:
Array
(
[0] => [abc - def - ghi - jkl]
[1] => abc
[2] => - jkl
[3] => jkl
)
我需要的是像这样的东西:
Array
(
[0] => [abc - def - ghi - jkl]
[1] => abc
[2] => - def
[3] => def
[4] => - ghi
[5] => ghi
[6] => - jkl
[7] => jkl
)
我能够在 C# 中通过查看“captures”组来做到这一点。如何在 PHP 中实现相同的功能?
-
表示一个范围,而你的表达式' -\]'
意味着匹配从\x20
到\x5D
中的任何字符。因此,[^ -\]]
与[^ !"#$%&'()*+,\-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\]]
相同。你需要转义连字符-
! - ridgerunner