V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
richiefans
V2EX  ›  程序员

正则的一个问题,大侠帮忙啊

  •  
  •   richiefans ·
    iamued · Aug 23, 2012 · 4327 views
    This topic created in 5001 days ago, the information mentioned may be changed or developed.
    目前用的这个正则 <[a|A][^<>]href=\"([^\"]+)\"[^<>]>([^<>]+)<\/[a|A]>
    可以匹配出诸如

    <a href="url1.html">text1</a>
    <a href="url1.html" target="_blank">text1</a>
    <a class="c1" href="url1.html">text1</a>

    目前发现在获取text的时候 有以下问题
    如果是

    <a href="url.html"><span>链接1</span></a>

    就没办法获取了
    请大侠帮忙解决下
    或者有没有比较通用的提取链接的正则 目前在用python 不过正则应该没太大区别吧
    9 replies    1970-01-01 08:00:00 +08:00
    yangg
        1
    yangg  
       Aug 23, 2012
    匹配所有的,非贪婪

    <[a|A][^<>]href=\"([^\"]+)\"[^<>]>([\s\S]*?)<\/[a|A]>
    kamal
        2
    kamal  
       Aug 23, 2012
    sivacohan
        3
    sivacohan  
    PRO
       Aug 23, 2012
    python有urllib2,用来提取很方便。不然总会因为标签包含问题
    或者你可以分为两部或者几步完成。第一步和一楼的一样。第二部,去查询之前第一步生成的结果集都保护哪些标签。

    正则有一个问题就是你必须明确你有处理的文本情况。个人建议是逐步细化。
    ljbha007
        5
    ljbha007  
       Aug 23, 2012
    1楼正解 这个问题我以前也纠结了很久 用懒惰匹配到</a>为止即可,否则直接用[\s\S]的话会匹配到最后一个</a>为止
    rightgenius
        6
    rightgenius  
       Aug 24, 2012
    @zxyzxy12321 这链接太强大了!stackoverflow上的人真是大湿啊!
    reus
        7
    reus  
       Aug 24, 2012
    可以用lxml来解析html,比正则方便很多
    hyq
        8
    hyq  
       Aug 24, 2012
    可以用SGML來處理HTML
    hyq
        9
    hyq  
       Aug 24, 2012
    另外,寫正則的時候,加個大小寫不敏感的flag,就不用判斷a|A
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   875 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 22:56 · PVG 06:56 · LAX 15:56 · JFK 18:56
    ♥ Do have faith in what you're doing.