0

我有一个正则表达式的输出行,如下所示:

<a href="google.com">"test link"</a><br>

如何将不带引号的 google.com 捕获到变量中?鉴于 url 可能包含许多 '/' 例如(以下随机组成的胡言乱语)

http://www.google.com/search/something/lulz/here2;i=!mfo1iu489fn1o2jlk21m4098mdoi

编辑:在上述情况下,我想要整个 url 字符串,而不仅仅是 www.google.com。

注意:不希望加载第 3 方库等以执行此操作。

4

2 回答 2

3

试试这个纯 bash 正则表达式解决方案

shopt -s nocasematch    #Dont care about the character case
text='<a href="hTTtp://www.google.com/search/something/lulz/here2;i=!mfo1iu489fn1o2jlk21m4098mdoi">"test link"</a><br>'
regex='(<a\ +href=\")([^\"]+)(\">)'
[[ $text =~ $regex ]] && echo ${BASH_REMATCH[2]}
于 2013-04-19T20:52:38.030 回答
2
shopt -s nocasematch

TEXT='<a href="http://www.google.com/search/something/lulz/here2;i=!mfo1iu489fn1o2jlk21m4098mdoi">"test link"</a><br>'

TEXT=${TEXT##*href=\"}
TEXT=${TEXT%%\"*}
TEXT=${TEXT##*//}
TEXT=${TEXT%%/*}

echo $TEXT
于 2013-04-19T19:58:56.247 回答