正则表达式匹配排除某些模式

时间:2016-03-22 13:29:45

标签: php regex regex-lookarounds

我想将字符串拆分为逗号(,)或&。这很简单,但我想停止括号之间的任何内容的匹配。 例如,如果我在

上运行
sleeping , waking(sit,stop)

只需要一个分割和两个元素

提前致谢

1 个答案:

答案 0 :(得分:1)

这是(*SKIP)(*FAIL)机制PCRE(以及PHP)优惠的完美示例。
您可以提出以下代码:

<?php
$string = 'sleeping , waking(sit,stop)';
$regex = '~\([^)]*\)(*SKIP)(*FAIL)|[,&]~';
# match anything between ( and ) and discard it afterwards
# instead match any of the characters found on the right in square brackets
$parts = preg_split($regex, $string);
print_r($parts);
/*
Array
(
    [0] => sleeping 
    [1] =>  waking(sit,stop)
)
*/

?>

这会将括号中,&分开。