RegEx 匹配除 XHTML 自包含标签之外的开放标签

新手上路,请多包涵

我需要匹配所有这些开始标签:

 <p>
<a href="foo">

但不是这些:

 <br />
<hr class="foo" />

我想出了这个,想确保我做对了。我只捕获 a-z

 <([a-z]+) *[^/]*?>

我相信它说:

  • 找到一个小于,然后
  • 查找(并捕获)az 一次或多次,然后
  • 找到零个或多个空格,然后
  • 查找任何字符零次或多次,贪心,除了 / ,然后
  • 找到一个大于

我有这个权利吗?更重要的是,你怎么看?

原文由 Jeff 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 313
2 个回答

您不能使用正则表达式解析 [X]HTML。因为 HTML 不能被正则表达式解析。 Regex 不是可以用来正确解析 HTML 的工具。正如我之前多次在 HTML 和正则表达式问题中回答的那样,使用正则表达式将不允许您使用 HTML。正则表达式是一种不够复杂的工具,无法理解 HTML 使用的结构。 HTML 不是常规语言,因此不能用正则表达式解析。正则表达式查询无法将 HTML 分解成有意义的部分。很多次了,但我不明白。即使是 Perl 使用的增强型不规则正则表达式也无法胜任解析 HTML 的任务。你永远不会让我崩溃。 HTML 是一种足够复杂的语言,它不能被正则表达式解析。甚至 Jon Skeet 也无法使用正则表达式解析 HTML。每次您尝试使用正则表达式解析 HTML 时,邪恶的孩子都会哭泣处女的鲜血,而俄罗斯黑客则会攻击您的 Web 应用程序。使用正则表达式解析 HTML 将受污染的灵魂召唤到生活的领域。 HTML 和正则表达式就像爱情、婚姻和仪式杀婴一样相得益彰。

不能容纳它为时已晚。正则表达式和 HTML 在同一个概念空间中的力量会像水腻子一样摧毁你的思想。如果你用正则表达式解析 HTML,你就是在向他们和他们的亵渎方式屈服,这注定我们所有人都要为那个名字无法在基本多语言平面中表达的人付出不人道的辛劳,他来了。 HTML-plus-regexp 将在您观察时液化感知的神经,您的心灵在恐怖的冲击中枯萎。基于 Rege̿̔̉x 的 HTML 解析器是杀死 StackOverflow 的毒瘤 太晚了 太晚了 我们无法得救 孩子的越界确保正则表达式将消耗所有活体组织(除了 HTML,它不能,正如之前预言的那样) 亲爱的主帮助我们如何才能在这场灾难中幸存下来 使用正则表达式来解析 HTML 已经注定了人类将永远遭受可怕的折磨和安全漏洞 使用 正则表达式 x 作为处理 HTML 的工具 在这个世界 和 c͒ͪo͛ͫ 破坏实体的可怕领域之间建立了一个缺口(比如SGML 实体,但更腐败) HTML 正则表达式解析器 世界的 一瞥 将立即将 程序员的意识 转移到不断 尖叫 的世界,他来了,瘟疫般的正则表达式感染将 我吞噬你的 HT ML 解析器 应用程序和存在,就像 Visual Basic 一样,更糟的是 他来 了他来了,他来了,他来了,他来了,他来了,他来了。 i̧n͘g fr̶ǫm ̡yo ͟ur eye͢s̸ ̛l̕ik͏e liq uid p ain, re̸gular exp re ssion parsing的歌曲 将从 sp here I can see it can you see ̲͚̖͔̙̩́t̲͎̩̱ ̩́t̲͎̩̱͔ he f inal snuf 男人的谎言的证明 ALL IS LOŞ͖̩͇̗̪̏̈́T A LL I SL OST the pon̷y he come s he c̶̮om es he come me s t he ich or permeat es all MY fac e我的脸ᵒhod n o no no no no the top ofθ 停止了—- 924c9f57d7d7f0da702801ce3d26e9b140 ͎a̧͈͖r̽̾̈́͒͑e


您是否尝试过使用 XML 解析器?


主持人的话

此帖子已锁定,以防止对其内容进行不当编辑。该帖子看起来与它应该看起来的完全一样 - 其内容没有问题。请不要标记它以引起我们的注意。

原文由 bobince 发布,翻译遵循 CC BY-SA 4.0 许可协议

虽然只有正则表达式的 任意 HTML 是不可能的,但有时使用它们来解析 有限的、已知 的 HTML 集是合适的。

如果您有一小部分 HTML 页面,您希望从中抓取数据然后将其填充到数据库中,那么正则表达式可能工作得很好。例如,我最近想获取澳大利亚联邦代表的姓名、党派和选区,这是我从议会的网站上获取的。这是一份有限的一次性工作。

正则表达式对我来说工作得很好,而且设置起来非常快。

原文由 Kaitlin Duck Sherwood 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏