正则表达式匹配的模式

时间:2013-03-16 07:57:46

标签: php regex pattern-matching preg-match-all

我试图想出这个字符串的正则表达式匹配,但我失去了头发。 这是我到目前为止的示例模式。


<?php
    preg_match_all('/\(.*?\)*([^,\s][^\,]*[^.\s])/', 'Alpha Romeo (11:00), Honda (11:00 & 12:00), Toyota (11:00, 12:00 & 8:00)', $result);
    print_r($result);
?>

期望的输出:


Array
(
    [0] => Alpha Romeo (11:00),
    [1] => Honda (11:00 & 12:00),
    [2] => Toyota (11:00, 12:00 & 8:00)
)

2 个答案:

答案 0 :(得分:3)

preg_match_all('/[,\s]+(.*?\))/', 'Alpha Romeo (11:00), Honda (11:00 & 12:00), Toyota (11:00, 12:00 & 8:00)', $result);

这是output

Array ( 
    [0] => Romeo (11:00) 
    [1] => Honda (11:00 & 12:00) 
    [2] => Toyota (11:00, 12:00 & 8:00)
)

P.S。:我在这里输出$result[1]


修改

最后一个错过Alpha第一场比赛。这是一个更好的模式:

<?php
    preg_match_all('/,?(.*?\))/', 'Alpha Romeo (11:00), Honda (11:00 & 12:00), Toyota (11:00, 12:00 & 8:00)', $result);
    print_r($result);
?>

Link

答案 1 :(得分:0)

试试这个:

$str = 'Alpha Romeo (11:00), Honda (11:00 & 12:00), Toyota (11:00, 12:00 & 8:00)';

preg_match_all('#[^,\s]{2}.*?\(.*?\)#', $str, $matches);

echo var_export($matches, TRUE);

输出:

array (
  0 => array (
    0 => 'Alpha Romeo (11:00)',
    1 => 'Honda (11:00 & 12:00)',
    2 => 'Toyota (11:00, 12:00 & 8:00)',
  ),
)