Gloynus_Aleos
@Gloynus_Aleos
Эльф

Как в JavaScript регулярными выражениями найти текст между строками адресов?

Есть строки, в которых через пробел написаны пути к изображениям и комментарии к ним.
Пример 1:
../img/picture_1.png Комментарий 1 /img/picture_2.png Комментарий 2


Пример 2:
../img/picture_1.png Комментарий 1 /img/picture_2.png Комментарий 2 img/picture_3.png


Все пути заканчиваются на «.png», но начинаются по-разному: с двух точек или со сшела или просто с имени папки. В комментариях могут быть разные символы в разных количествах. Строка может заканчиваться комментарием, а может и путём к картинки.

Найти все адреса не сложно, вот выражение: /([^ ]+\.png)/g.
Но как найти все комментарии (особенно с учётом ограничений JS)?!

Всё это необходимо для того, чтобы обернуть в HTML-теги. Результаты должны быть следующими.
Пример 1:
<img src="../img/picture_1.png"><p>Комментарий 1</p><img src="/img/picture_2.png"><p>Комментарий 2</p>

Пример 2:
<img src="../img/picture_1.png"><p>Комментарий 1</p><img src="/img/picture_2.png"><p>Комментарий 2</p><img src="img/picture_3.png">
  • Вопрос задан
  • 167 просмотров
Пригласить эксперта
Ответы на вопрос 1
Gloynus_Aleos
@Gloynus_Aleos Автор вопроса
Эльф
Сам решаю эту задачу только за два прохода:
var exprPng = / *([^ ]+\.png) */g;
var exprPngP = /([^ ]+\.png">)(.*?)(?=<img src=|$)/g;

Если у кого-то есть рекомендация по улучшению, то прошу поделиться.

Вывел такое выражение: ([^ ]+\.png) *(.*?) *(?=[^ ]+\.png|$) — работает хорошо при любом завершении и даже без комментариев. Минус только в том, что результат с ним всегда будет заканчиваться наполненным или пустым тегом «<p>» — терпимо.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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