@BarneyGumble

Что не так с регуляркой?

Добрый вечер. Пытаюсь разбить строку регуляркой. Здесь всё нормально:

$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords); // Array([0] => hypertext [1] => language [2] => programming)


Если я меняю условие, и хочу разбить на две части, разделённые первой закрывающей скобкой, то ничего не получаю слева:

$keywords = preg_split("/^[^)]+/", "hypertext) language), programming");
print_r($keywords); // Array ( [0] => [1] => ) language), programming )
//хотя я ожидаю увидеть Array ( [0] => hypertext [1] => ) language), programming )


Проверял свою регулярку /^[^)]+/ на https://regex101.com/ - там он корректно находит вхождение до первой закрывающей скобки

Что делаю не так?
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
lidacriss
@lidacriss
wtf
не получится у вас
Array ( [0] => hypertext [1] => ) language), programming )

т.к. вы начало съедаете
вы должны понимать, что делает preg_split
она разбивает строку по регулярному выражению.
если у нас регулярка ^[^)]+"выкусывает" эту часть:
hypertext) language), programming

то и получится у вас результат:
Array ( [0] => [1] => ) language), programming )
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@synapse_people
экранируй ) - \)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы