Я хочу разбить строку вокруг запятой (,
) или же &
, Это просто, но я хочу остановить соответствие для любого содержимого в скобках.
Например, если я бегу по
sleeping , waking(sit,stop)
должен быть только один сплит и два элемента
заранее спасибо
Это идеальный пример для (*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)
)
*/
?>
Это разделит любой ,
или же &
который не в скобках.
Других решений пока нет …