#php #regex #preg-split
#php #регулярное выражение #preg-split
Вопрос:
Я хочу, чтобы результаты были:
Cats, Felines amp; Cougars
Dogs
Snakes
Это самое близкое, что я могу получить.
$string = "Cats, Felines amp; Cougars,Dogs,Snakes";
$result = split(',[^ ]', $string);
print_r($result);
Что приводит к
Array
(
[0] => Cats, Felines amp; Cougars
[1] => ogs
[2] => nakes
)
Комментарии:
1. Используется
s
для сопоставления пробелов
Ответ №1:
Для достижения этой цели вы можете использовать отрицательный прогноз:
,(?!s)
На простом английском языке приведенное выше регулярное выражение говорит, что все запятые совпадают, только если за ним не следует пробел ( s
) .
В PHP вы можете использовать его с preg_split()
, например, так:
$string = "Cats, Felines amp; Cougars,Dogs,Snakes";
$result = preg_split('/,(?!s)/', $string);
print_r($result);
Вывод:
Array
(
[0] => Cats, Felines amp; Cougars
[1] => Dogs
[2] => Snakes
)
Комментарии:
1.@JayDansand: На самом деле это привело
Test, Example
бы к.2. Ага, ты прав, это то, что я получаю за просмотр. Отозвано!
3. @JayDansand: Хотя я не уверен, ожидает ли это OP в качестве вывода. Думаю, я просто оставлю ответ таким, какой он есть. Кстати, спасибо 🙂
Ответ №2:
функция split() устарела, поэтому вместо нее я использую preg_split .
Вот что вы хотите:
$string = "Cats, Felines amp; Cougars,Dogs,Snakes";
$result = preg_split('/,(?! )/', $string);
print_r($result);
Это использует ?! чтобы показать, что мы хотим разделить на запятую только тогда, когда за ней не следует сгруппированная последовательность.
Я связал документацию Perl по оператору, поскольку preg_split использует регулярные выражения Perl:
Комментарии:
1. Спасибо, я думаю, что это самый чистый синтаксис
Ответ №3:
Если вы хотите разделить на символ, но хотите игнорировать этот символ в случае его экранирования, используйте утверждение lookbehind .
В этом примере строка будет разделена на «:», но «:» будет проигнорировано:
<?php
$string='a:b:c:d';
$array=preg_split('#(?<!\):#',$string);
print_r($array);
?>
Результаты в:
Array ( [0] => a [1] => b [2] => c :d )