我正在尝试在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+)\])+)
。
我已阅读this和this,但我无法使用preg_match或preg_match_all。
对此的任何意见都表示赞赏。
答案 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]