V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
pppguest3962
V2EX  ›  问与答

求问针对 html 标签<em>的正则表达式的写法。。。

  •  1
     
  •   pppguest3962 · 2018-08-26 21:06:48 +08:00 · 2995 次点击
    这是一个创建于 2272 天前的主题,其中的信息可能已经有所发展或是发生改变。

    实在写不出来,你看我都发贴求问了。。。。喵~

    <em class="xyz ">utxu2zy</em>
    

    求两种写法, 目的只有一个:匹配 em 标签区段的内容,

    内容有可能什么字符(包括全半角或者制表符、回车什么的)都可能会有

    1、确定是 class 属性绝对是"xyz ",z 后面有空格的正则匹配写法?

    2、class 属性无法确定,属性的内容也是什么英文数字都有可能,的正则匹配写法?

    8 条回复    2018-08-27 06:59:30 +08:00
    yanaraika
        1
    yanaraika  
       2018-08-26 21:57:08 +08:00
    1. html 文法理论上无法用非魔改正则匹配
    2. 用条件引用之类的魔改正则可以做到,随便搜一下就有 http://www.imkevinyang.com/2009/07/%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D%E5%B5%8C%E5%A5%97html%E6%A0%87%E7%AD%BE.html
    3. 但 2 的写法又臭又长,为什么不丢进 beautifulsoup 里用 CSS selector
    lazyboy
        2
    lazyboy  
       2018-08-26 22:17:19 +08:00
    <(em)[^>]*?class="xyz\s"[^>]*?>[^<]*?<\/\1>
    leafiy
        3
    leafiy  
       2018-08-26 22:18:03 +08:00 via Android
    .$? 加上 em ?
    lazyboy
        4
    lazyboy  
       2018-08-26 22:18:14 +08:00
    <(em)[^>]*?>[^<]*?<\/\1>
    des
        5
    des  
       2018-08-26 22:30:40 +08:00 via Android
    同一楼,不要用正则
    爬虫用正则很容易出问题,并且正则也难写,一旦碰到问题就傻眼了,根本没法改和维护。除非就只用一次,根本不用维护
    同一楼,老老实实用 Beautiful Soup 不行吗?
    jjplay
        6
    jjplay  
       2018-08-26 22:38:21 +08:00
    不要死盯着这个 class,可以从他的父级 class 来定位
    simoncc
        7
    simoncc  
       2018-08-27 01:13:25 +08:00
    用 lxml 吧,解析速度快,使用也方便,控制台选中元素右键 copy xpath 即可
    delectate
        8
    delectate  
       2018-08-27 06:59:30 +08:00
    >>> import re
    >>> a='<em class="xyz ">utxu2zy</em>'
    >>> re.findall(r'<em class="xyz.?">(.*)<\/em>',a, re.I)
    >>> a='<em class="xxxxx">utxu2zy</em>'
    >>>>>> re.findall(r'<em class=".*">(.*)<\/em>',a, re.I)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2616 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:00 · PVG 00:00 · LAX 08:00 · JFK 11:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.