我遵循正则表达式:
preg_match('/some text \d ([\d\,\s]*[A-Z0-9]\, [A-Za-ząćęłńóśźżĄĆĘŁŃÓŚŹŻ\s]*){0,5}/',$text,$results);
里面有子模式:([\d\,\s]*[A-Z0-9]\, [A-Za-ząćęłńóśźżĄĆĘŁŃÓŚŹŻ\s]*)
,我希望将它从0到5次匹配。但我希望将此子模式的每个匹配项与$result
数组中的其他匹配项分开。 - 我怎么做?
我的结果是(我为此示例更改了字符串):
0 => string 'some text pattern1 pattern2 pattern3 pattern4 pattern5' (length=376)
1 => string 'pattern5'
因此它匹配子模式5次,但只有最后一个在数组中分开...
答案 0 :(得分:2)
AFAIK不可能。您必须在正则表达式中手动重复该模式。
答案 1 :(得分:1)
我会通过几个步骤来做到这一点。
根据您的简化字符串:
$text = "some text pattern1 pattern2 pattern3 pattern4 pattern5";
if (preg_match('/^some text /', $text)) {
$text = preg_replace('/^some text /', '', $text);
preg_match_all('/(pattern\d)/', $text, $m);
print_r($m);
}
<强>输出:强>
Array
(
[0] => Array
(
[0] => pattern1
[1] => pattern2
[2] => pattern3
[3] => pattern4
[4] => pattern5
)
[1] => Array
(
[0] => pattern1
[1] => pattern2
[2] => pattern3
[3] => pattern4
[4] => pattern5
)
)