@ince

Как сформулировать regexp?

'[катетер-направленному тромболизису] (https://www.radiologyinfo.org/en/info.cfm?pg=thrombo), но та, которая, помимо удаления тромбов, также открывает и усиливает слишком маленькие кровеносные сосуды через стенты или другие средства. Также может быть желательно увеличить их проницаемость, чтобы фиксаторы достигали паренхимы мозга по всему кровеносному сосуду, а не только на кончиках. Лазер может делать микроскопические дыры по всей длине, а затем, возможно, добавить [тонкий слой полиамида] (https://en.wikipedia.org/wiki/Thin-film_composite_membrane#Structure_and_materials)'


Хочу выделить две ссылки из текста (каждая из них разбита на две группы)
Написал такое выражение, почему-то не работает
\[(.{2,})\]\s\((http.*[^\,])\)\g
В чем проблема?
  • Вопрос задан
  • 75 просмотров
Решения вопроса 3
DevMan
@DevMan Куратор тега JavaScript
проблема в жадности. используйте модификатор ungreedy.
https://regex101.com/r/I5K1Ju/1
Ответ написан
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
var re = /\[(.*?)\]\s*\((http.*?)\)/g;
var txt = '[катетер-направленному тромболизису] (https://www.radiologyinfo.org/en/info.cfm?pg=thrombo), но та, которая, помимо удаления тромбов, также открывает и усиливает слишком маленькие кровеносные сосуды через стенты или другие средства. Также может быть желательно увеличить их проницаемость, чтобы фиксаторы достигали паренхимы мозга по всему кровеносному сосуду, а не только на кончиках. Лазер может делать микроскопические дыры по всей длине, а затем, возможно, добавить [тонкий слой полиамида] (https://en.wikipedia.org/wiki/Thin-film_composite_membrane#Structure_and_materials)';

var html = txt.replace(re,(a,b,c)=>{
   console.log("-------------\ntext:",b,"\nurl:",c);
   return `<a href='${c}'>${c}</a>`;
});

console.log("-------------\n",html);

выхлоп в консоль

-------------
text: катетер-направленному тромболизису 
url: https://www.radiologyinfo.org/en/info.cfm?pg=thrombo
-------------
text: тонкий слой полиамида 
url: https://en.wikipedia.org/wiki/Thin-film_composite_membrane#Structure_and_materials
-------------
 <a href='https://www.radiologyinfo.org/en/info.cfm?pg=thrombo'>https://www.radiologyinfo.org/en/info.cfm?pg=thrombo</a>, но та, которая, помимо удаления тромбов, также открывает и усиливает слишком маленькие кровеносные сосуды через стенты или другие средства. Также может быть желательно увеличить их проницаемость, чтобы фиксаторы достигали паренхимы мозга по всему кровеносному сосуду, а не только на кончиках. Лазер может делать микроскопические дыры по всей длине, а затем, возможно, добавить <a href='https://en.wikipedia.org/wiki/Thin-film_composite_membrane#Structure_and_materials'>https://en.wikipedia.org/wiki/Thin-film_composite_membrane#Structure_and_materials</a>

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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