1

我有以下正则表达式:

preg_match('/some text \d ([\d\,\s]*[A-Z0-9]\, [A-Za-ząćęłńóśźżĄĆĘŁŃÓŚŹŻ\s]*){0,5}/',$text,$results);

里面有 subpattern:([\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次,但只有最后一个在数组中分开......

4

2 回答 2

2

不可能。您必须在正则表达式中手动重复该模式。

于 2012-09-28T11:28:40.723 回答
2

我会通过几个步骤来做到这一点。

根据您的简化字符串:

$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
        )

)
于 2012-09-28T11:54:20.773 回答