在Regex PHP中捕获重复的组

时间:2011-12-07 15:17:38

标签: php regex

我正在尝试在PHP正则表达式中捕获重复的组。

我正在使用的表达式为:(?:.*\s|^)@\[(\d+)\],它可以匹配以下内容:

some text here @[2] some more text并在比赛中返回2.

现在我要匹配:

some text here @[2] some more text @[3] more text并返回[2,3]。现在,我只能使用此表达式返回3(最后一个元素):(((?:.*\s|^)@\[(\d+)\])+)

我已阅读thisthis,但我无法使用preg_match或preg_match_all。

对此的任何意见都表示赞赏。

1 个答案:

答案 0 :(得分:1)

我建议这个更简单的解决方案:

$string = 'some text here @[2] some more text @[3] more text';
preg_match_all('/@\[(\d+)\]/', $string, $matches);
$matches = $matches[1];
$result = '[' . implode(', ', $matches) . ']';
echo $result; // [2, 3]