V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
richiefans
V2EX  ›  程序员

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

  •  
  •   richiefans ·
    iamued · 2012-08-23 17:42:50 +08:00 · 3502 次点击
    这是一个创建于 4473 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前用的这个正则 <[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 条回复    1970-01-01 08:00:00 +08:00
    yangg
        1
    yangg  
       2012-08-23 17:56:04 +08:00
    匹配所有的,非贪婪

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

    正则有一个问题就是你必须明确你有处理的文本情况。个人建议是逐步细化。
    zxyzxy12321
        4
    zxyzxy12321  
       2012-08-23 20:56:50 +08:00
    ljbha007
        5
    ljbha007  
       2012-08-23 21:07:23 +08:00
    1楼正解 这个问题我以前也纠结了很久 用懒惰匹配到</a>为止即可,否则直接用[\s\S]的话会匹配到最后一个</a>为止
    rightgenius
        6
    rightgenius  
       2012-08-24 10:34:41 +08:00
    @zxyzxy12321 这链接太强大了!stackoverflow上的人真是大湿啊!
    reus
        7
    reus  
       2012-08-24 10:42:51 +08:00
    可以用lxml来解析html,比正则方便很多
    hyq
        8
    hyq  
       2012-08-24 10:44:50 +08:00
    可以用SGML來處理HTML
    hyq
        9
    hyq  
       2012-08-24 10:46:00 +08:00
    另外,寫正則的時候,加個大小寫不敏感的flag,就不用判斷a|A
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5331 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:56 · PVG 14:56 · LAX 22:56 · JFK 01:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.