maddog670
@maddog670

Как исправить регулярное выражение?

Всем привет.
Есть у меня набор ссылок такого вида

people-news/gayd-park-privodyat-v-poryadok/ - ссылка на новость с категорией
news/society/nedorogie-pamyatniki-na-mogilu-eto-ne-znachit-plokhoe-kachestvo/ - ссылка на новость категория + сабкатегория
news/society/ - ссылка на сабкатегорию
news/ - ссылка на категорию

И есть регулярка (.*)?\/(.*)\/(.*), которая разделяет ссылку вида
people-news/gayd-park-privodyat-v-poryadok/ на 2 группы, people-news - категорию, gayd-park-privodyat-v-poryadok урл новости
или
news/society/nedorogie-pamyatniki-na-mogilu-eto-ne-znachit-plokhoe-kachestvo/ на 2 группы, news/society - категорию с сабкатегорию и nedorogie-pamyatniki-na-mogilu-eto-ne-znachit-plokhoe-kachestvo - урл новости.

На данный момент регулярка работает немного не так как нужно, а именно, 2 первые ссылки которые выше, отрабатывает правильно, ссылку news/ не отрабатывает - это тоже верно, а вот news/society/ разделяет на 2 группы, хотя не должна ее отрабатывать и должна пропускать.

Как правило, категории и сабкатегории, то у них названия не особо длинные или какй-то еще определять. Возможно как-то задать минимальное количество символов для категории и сабкатегории, в которые попадали или не попадали они.

Ccылка на тест регулярки https://regex101.com/r/eSVp1L/1/
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
@dodo512
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
Причина многих проблем - каша в голове и неумение сформулировать задачу даже для себя самого.
Весь этот войнаимир делится на два условия:
- если в строке есть слеш - отделить то, что после последнего слеша, в урл, остальное будет категориями. Если эта остальная часть короче 5 символов - игнорировать строку.
- если нет - строка не нужна вообще.
И внезапно оказывается, что регулярки тут нужны, как козе боян, а достаточно substr + strrpos.
Ответ написан
Ваш ответ на вопрос

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

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