我有一个我正在使用的输出行,如下所示:
<a href="google.com">"test link"</a><br>
如何将没有引号的google.com捕获到变量中?鉴于网址可能包含许多'/',例如(随机组成下面的乱码)
http://www.google.com/search/something/lulz/here2;i=!mfo1iu489fn1o2jlk21m4098mdoi
编辑:在上述情况下,我想要整个网址字符串,而不仅仅是www.google.com。
注意:不希望加载第三方库等以执行此操作。
答案 0 :(得分: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]}
答案 1 :(得分: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