首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从XML文件中提取http链接的Regex

问从XML文件中提取http链接的Regex
EN

Stack Overflow用户
提问于 2018-02-16 17:17:17
回答 1查看 450关注 0票数 0

我有一个xml文件,它有很多行,如:

<xhtml:link vip="true" href="http://store.vcenter.com/stores/en/product/tigers-midi/100" />

如何仅提取链接- http://store.vcenter.com/stores/en/product/tigers-midi/100

我尝试了http://www\.\.com[^<]+,但是它捕捉到了行尾之前的所有内容--包括引号和关闭的XML标记。

我把这个表达式和egrep连用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-16 17:22:45

不要用regex解析HTML,使用适当的XML/HTML解析器。

检查:使用带有HTML标记的正则表达式您可以使用以下内容之一:

  • xmllint
  • xmlstarlet
  • saxon-lint

文件:

代码语言:javascript
复制
<root>
<xhtml:link vip="true" href="http://store.vcenter.com/stores/en/product/tigers-midi/100" />
</root>

使用xmllint的示例:

代码语言:javascript
复制
xmllint --xpath '//*[@vip="true"]/@href' file.xml 2>/dev/null

输出:

代码语言:javascript
复制
 href="http://store.vcenter.com/stores/en/product/tigers-midi/100"

如果您需要一个快速和脏的一次命令,您可以:

代码语言:javascript
复制
egrep -o 'https?://[^"]+' file
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48831835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档