程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

`([^\<]+)<\/a>` 和 `(<a.+)<\/a>` 之间的区别?[复制]

发布于2023-11-18 07:47     阅读(1040)     评论(0)     点赞(20)     收藏(5)


我试图不捕获锚标记,所以我使用了这个

(?!([^\<]+)<\/a>)(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])

它排除锚标记并选择锚标记内不存在的网址,但在这种情况下失败:

<a href="www.google.com"> <b> Google Homepage </b> </a>
因为左角括号。

所以我想用这个

(?!(<a.+)<\/a>)(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])
但这不起作用?

请任何人解释一下为什么这不起作用以及解决我的问题的可能方法是什么。

希望我解释了这个问题,提前感谢您的帮助。


解决方案


切勿使用正则表达式来解析 html。只是不要。有太多不同的复杂情况,使用类似的东西htmlparser会更容易。此链接应该可以帮助您做出决定:https://tomassetti.me/parsing-html/如果您不想访问该链接,以下是不同解析器的要点:

爪哇

  • 拉加托和杰瑞
  • html清理器
  • 是 p

C#

  • 角度锐利
  • Html敏捷包

Python

  • 标准库的 HTML 解析器
  • HTML5库
  • Html5 解析器
  • 线性XML
  • 高级HTML解析器
  • 美丽的汤

JavaScript

  • 浏览器

    • jQuery
    • DOM解析器
  • Node.js

    • 凯里欧
    • 我在家
    • html解析器2
    • 解析5



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.qianduanheidong.com/blog/article/532560/724f5d6970a8e2162d5a/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

20 0
收藏该文
已收藏

评论内容:(最多支持255个字符)