在PHP中捕获重复出现的正则表达式模式

时间:2010-10-16 04:09:58

标签: php regex pcre

我有一个模式

ab 23 cde 25 ... and so on

我可以像

那样捕捉上述模式
array(
 [patterns] => array(
   [0] => array(
    [payer] => 'ab'
    [amt] => 23
   )
   [1] => array(
    [payer] => 'cde'
    [amt] => 25
   )
 )
)

这可能吗?

3 个答案:

答案 0 :(得分:2)

您可以将preg_match_all用作:

$str = 'ab 23 cde 25';
preg_match_all('/(\w+)\s+(\d+)/',$str,$matches);
$result = array();
for($i=0;$i<count($matches[0]);$i++) {
        $result[] = array('payer' => $matches[1][$i], 'amt' => $matches[2][$i]);
}

Working link

答案 1 :(得分:0)

形成一个正则表达式以匹配数组中的每个项目(\w+\s+\d+)。收集所有这些(这应该给你像ab 23)。

然后对于这些项目中的每一项,拆分空白并填入更大的数组作为[payer],[amt]。

答案 2 :(得分:0)

(?:'|.)(\w+)(?:'|$)