我有以下正则表达式:
\[([^ -\]]+)( - ([^ -\]]+))+\]
这可以成功匹配以下内容:
[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#中查看“捕获”组来做到这一点。如何在PHP中做到这一点?
最佳答案
这不是正则表达式的工作。与\[([^\]]*)\]
匹配,然后由split
将" - "
第一次捕获。
<?php
$str = "[abc - def - ghi - jkl]";
preg_match('/\[([^\]]*)\]/', $str, $re);
$strs = split(' - ', $re[1]);
print_r($strs);
?>