@stepkakovalyov
Редкостный ретард.

Как разбить строку на слова по нескольким разделителям?

Можно ли с помощью regexp разбивать строки на "слова" по принципу: если какая-то последовательность ограничена символами "", то эта последовательность - слово(неважно, есть ли внутри неё пробельные символы), если последовательность не ограничена "", но ограничена пробелами, тогда разбиваем по пробелам. Т.е. строка вида <"word" "word1 word2 a" word3 "w k"> превратится в следующий набор "слов": word; word1 word2 a; word3; w k. Сначала я пытался написать регулярку вида [^"\s]+, но тогда невозможно установить приоритет разделителей и она проигнорит пробелы между кавычками, потом была попытка написать отдельно случай для кавычек, отдельно для пробелов и сделать логическое или, но происходит тоже самое. В конце концов я попытался искать все пробелы, не стоящие между кавычек, и сплитить по ним, удаляя оставшиеся кавычки; естественно ничего вразумительного не получилось. В итоге, на мой взгляд, проще было бы уже просто пройтись циклом и распарсить строку вручную, но ведь regexp - это модно, молодёжно, оптимизировано. Прошу помочь написать регулярку, если её существование вообще возможно, и желательно объяснить, как она работает.
  • Вопрос задан
  • 1211 просмотров
Решения вопроса 1
@dodo512
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@IS-Builder
~ PHP-8 & REGEXP - This is a really powerful kit ~
Степан Ковалёв ~(?:"|\h)\K[^"\h>]+~
В выборке не будет ничего лишнего.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы