0

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


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

4

2 回答 2

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

这是输出

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

PS:我在$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);
?>

链接

于 2013-03-16T08:05:28.070 回答
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)',
  ),
)
于 2013-03-16T08:13:40.877 回答