ilyabond
@ilyabond
В яме даннинга крюгера

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

Здравствуйте, извините что приходится задавать такие вопросы.
Проблема: как составить регулярку для поиска такой конструкции:

[recomended-title]
Заголовок с любыми символами
[/recomended-title]
[recomended-img-link]
url с любыми символами
[/recomended-img-link]
[recomended-link]
url с любыми ссылками
[/recomended-link]
при этом между этими конструкциями можно вставлять пробелы и переносы, но символы нельзя вставлять.

И вроде я такую регулярку составил: (\[recomended-title\][\S\s]*\[\/recomended-title\])[\s\n]*(\[recomended-img-link\][\S\s]*\[\/recomended-img-link\])[\s\n]*(\[recomended-link\][\S\s]*\[\/recomended-link\])
637db8cb868eb244021865.png

Но у неё есть проблемы. Например, если я перед этим блоком вставлю одну часть верхнего блока, то поиск он начнёт от него: 637db92be2bfd031125340.png

Не понимаю как ограничить поиск одной части только до первой попавшейся. Понимаю что таким исключением можно добавить "любой символ кроме..." - (\[recomended-title\][^и тут символ]*\[\/recomended-title\]), но можно ли как-то поставить исключение типа любое слово кроме \[recomended-title\]?

Конструкцию эту сам придумывал. Просто есть необходимость таким образом создавать контент на странице, чтобы было проще редакторам статей на сайте вставлять подобные блоки, в этом случае блок "рекомендуемое". Если есть идеи как реализовать этот же функционал с другой конструкцией, то буду благодарен если отпишитесь

Простите, просто что-то мозги закипают, но понимаю что чего-то я недопонимаю в регулярках. Спасибо
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
ilyabond
@ilyabond Автор вопроса
В яме даннинга крюгера
Решил вопрос изменением структуры на:
<div class="recommended-box-input">
	<div class="title"></div>
	<div class="url"></div>
	<div class="url-img"></div>
</div>


Намного проще найти элементы, объединённые в группу
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
soulilya
@soulilya
Культурный, утонченный и изысканный.
Посмотри исходный код вот этой библиотеки git
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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