【问题标题】:Stripping tags using regex in python在python中使用正则表达式剥离标签
【发布时间】:2018-03-27 03:19:53
【问题描述】:

我怎样才能去掉这个列表中的标签:

['</span>A walk in the park<span class="html-tag"]

我设法使用(r'(?&lt;=&lt;/span&gt;)[^&gt;]+') 删除第一个标签,但不知道如何删除第二个标签。我知道正则表达式不是处理标签的方法,但只是想弄清楚这一点。

【问题讨论】:

  • 出于好奇 - 首先你是如何得到那个字符串的......?几乎看起来您可能希望在某些处理的早期以不同方式提取文本,而不是整理...
  • @JonClements 我刚刚创建了上述内容,以反映我在更复杂的任务中遇到的一些问题,这些问题很难解释。
  • 当然 - 只是似乎你正试图清理可以避免的事情......
  • 我知道,嘿。它是 uni 任务的一部分,禁止使用除“re”模块之外的任何模块进行网络抓取。我觉得很傻

标签: python regex web-scraping


【解决方案1】:

你可以使用:

(?:>)(.*)(?:<)

在正则表达式中,每个打开和关闭的圆括号都定义了一个组。在这里,我们有 3 对圆括号,但第一个和最后一个在里面有一个 ?:。这意味着被定义的组是一个非捕获组,因此需要它来匹配模式,但解析器不会返回它。相反,您想要的是第 1 组。

【讨论】:

    【解决方案2】:

    您的正则表达式非常接近。在lookbehind找到的位置之后,你只想读到下一个&lt;

    (?<=</span>)[^<]+
    

    查看regex101

    $ cat test.py
    import re
    s='</span>A walk in the park<span class="html-tag"'
    print re.findall(r'(?<=</span>)[^<]+', s)
    
    $ python test.py
    ['A walk in the park']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-21
      • 2016-05-16
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      • 2012-04-20
      • 1970-01-01
      相关资源
      最近更新 更多