【问题标题】:Regex to match html tag opening and closing tag and everthing between the tags (please check the image)正则表达式匹配 html 标签的开始和结束标签以及标签之间的一切(请检查图片)
【发布时间】:2019-01-17 14:53:23
【问题描述】:

我想匹配这种模式以及标签之间的所有内容。

【问题讨论】:

  • 如果您尝试通过正则表达式处理 XMl 或 HTML,请比较 stackoverflow.com/a/1732454/7733418
  • 我已经尝试了所有我需要解决这个特定问题的方法。
  • 一般来说,我们更喜欢您将代码(甚至是示例代码)作为文本发布,而不是图片。能否粘贴原代码(确保每行有 4 个空格缩进)来替换图片?

标签: python regex html-parsing text-parsing


【解决方案1】:

如果您想要一个快速、可用但(不可避免地)不完美的解决方案,您可以使用<li[^>]*>.*?<\/li>。理想的用例是文本文件中的低使用查找和替换,而不是实际 HTML 解析器的任何部分。

此外,您需要启用单行模式(有时称为全点模式)。

编辑:

我真的不知道 Python 和换行符是怎么回事,但我能够让 this 工作:

re.sub(r'<li[^>]*>(?:.|\n)*?<\/li>', '', instr)

推广到任何数字(如果 Python >= 3.6):

n = 8726872
re.sub(fr'<li id="{n}"[^>]*>(?:.|\n)*?<\/li>', '', instr)

并且强制解析 HTML 更好(更安全和更清洁的方式)链接: Parsing HTML using Python

【讨论】:

  • 哦,抱歉,我犯了一个致命错误,并避开了验证答案的惯常做法。抱歉,我已经解决了。
  • 它只匹配 75 个模式中的 1 个,我已经添加了确切的代码,请尝试将数字匹配模式与开始行标记相匹配。请检查此网址以获取代码pastebin.com/bY52ua07
  • 尝试选中标记为 . matches newline 的框。我认为这会解决你的问题。
  • 如果 id 很重要,可以修改为:&lt;li id="8726872"[^&gt;]*&gt;.*?&lt;\/li&gt;
  • 不幸的是,它没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
相关资源
最近更新 更多