php正则表达式 - 如何在结果中分离子模式的重复

时间:2012-09-28 11:21:43

标签: php regex

我遵循正则表达式:

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次,但只有最后一个在数组中分开...

2 个答案:

答案 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
        )

)