Получить наибольшее совпадение внутренних регулярных выражений для обработчика регулярных выражений href

#swift #regex

#swift #регулярное выражение

Вопрос:

Я хочу перехватывать href теги со ссылкой на YouTube внутри них.

У меня есть это регулярное выражение:

 "<a.*?href=(.*?youtu.?be.*?)>.*?</a>"
  

Это работает, но не останавливается, если тег закрыт.

Это означает, что если у меня есть:

 <a href=www.google.come>google</a> <a href=www.youtube.com>youtube</a>
  

Желаемый результат:

 <a href=www.youtube.com>youtube</a
  

Фактический результат:

 <a href=www.google.come>google</a> <a href=www.youtube.com>youtube</a>
  

Он улавливает все это, распознав Google <a как открывающий, а youtubes </a> как более близкий.

Я хочу сделать свое регулярное выражение немного умнее, чтобы оно знало, как остановить совпадение при появлении Google closer и начать новую попытку сопоставления при появлении Youtube opener.

Я пробовал это, но это не сработало:

 "<a.*?[^>]href=(.*?youtu.?be.*?)>.*?</a>"
  

А также попробовал это:

 "<a[^>].*?href=(.*?youtu.?be.*?)>.*?</a>"
  

Ответ №1:

Вы можете попробовать этот шаблон :

 "<a[^>]*?href=[^>]*?youtu.?be[^>]*?>[^>]*?</a>"