Возвращаемое совпадение подстроки vimscript - PullRequest
0 голосов
/ 03 октября 2018

Я хочу извлечь URL-адрес ссылки на уценку, используя vimscript с регулярными выражениями.

В идеале что-то в этих строках:

fun! GetLinkUri(str)
    return match(a:str, '[.*]\((.*)\)', \1)
endfunc

Итак, получим строку типа: The search engine [Google](https://google.com) blabla Это будетreturn https://google.com.

То, как описана функция, не является правильным использованием соответствия.Есть ли способ сделать это с помощью матча?Есть какая-нибудь другая функция, которая выполняет эту работу?

1 Ответ

0 голосов
/ 03 октября 2018

Вам нужно будет использовать matchstr вместо match.Но это не единственная проблема, которая у вас есть.Я бы сделал это:

return matchstr(a:str, '\[.*\](\zs.*\ze)')
  1. [.*] означает совпадение один символ, то есть либо '.', либо '*'.Вам нужно экранировать квадратные скобки, если вы хотите сопоставить буквальные квадратные скобки.

  2. К сожалению, matchstr не может вернуть отдельную подгруппу, поэтому я использовал \zs и \ze, чтобы ограничить соответствующий раздел тем, что находится в скобках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...