我想使用带有正则表达式的vimscript提取markdown链接的url.
理想情况下,这些方面的内容:
fun! GetLinkUri(str)
return match(a:str, '[.*]\((.*)\)', \1)
endfunc
Run Code Online (Sandbox Code Playgroud)
所以给出一个字符串:The search engine [Google](https://google.com) blabla
它会返回https://google.com.
描述函数的方式不是匹配的正确使用.有什么方法可以匹配吗?还有其他功能可以完成这项工作吗?
您将需要使用matchstr而不是match.但这不是你唯一的问题.我会这样做:
return matchstr(a:str, '\[.*\](\zs.*\ze)')
Run Code Online (Sandbox Code Playgroud)
[.*]意味着匹配一个字符,即a '.'或a '*'.如果要匹配文字方括号,则需要转义方括号.
不幸的是,matchstr不能返回一个单独的子组,所以我使用\zs和\ze限制匹配部分到括号之间的内容.