我需要匹配所有这些开始标记:
<p>
<a href="foo">
但不是这些:
<br />
<hr class="foo" />
我想出了这个,并希望确保我做对了。我只是捕捉az
。
<([a-z]+) *[^/]*?>
我相信它说:
/
,然后我有这个权利吗?更重要的是,你怎么看?
您无法使用正则表达式解析 [X] HTML。因为正则表达式无法解析 HTML。正则表达式不是可用于正确解析 HTML 的工具。正如我之前在 HTML-and-regex 问题中回答过很多次,使用正则表达式不允许您使用 HTML。正则表达式是一种不太复杂的工具,无法理解 HTML 所使用的构造。 HTML 不是常规语言,因此无法通过正则表达式进行解析。正则表达式查询无法将 HTML 分解为有意义的部分。这么多次,但它没有找到我。即使是 Perl 使用的增强的不规则正则表达式也不能解析 HTML。你永远不会让我破解。 HTML 是一种足够复杂的语言,无法通过正则表达式进行解析。甚至 Jon Skeet 也无法使用正则表达式解析 HTML。每当你试图用正则表达式解析 HTML 时,邪恶的孩子就会为处女的鲜血哭泣,而俄罗斯黑客也会把你的 webapp 扯掉。用正则表达式解析 HTML 会将被污染的灵魂召唤到生活的领域。 HTML 和正则表达式就像爱情,婚姻和仪式杀婴一样。
inal snuf
华氏度人所有的谎言S 是失去了一个 LL 我 SL OST 个e - 小马才想起小号 Fing 头,他͎a̧͈͖r̽̾̈́͒͑e
ňOT 真正 ZA̡͊͠͝LGΌISͮ҉̯͈͕̹̘牛逼 O͇̹̺Ɲ̴ȳ̳个e- PO 纽约 H̸̡̪̯ͨ͊̽̅̾Ȩ̶̧̨̬̩̹̭̯̾͛ͪ̈ͧ̾ͬ͘C̷̙̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝s ^ 您是否尝试过使用 XML 解析器?
主持人的说明
此帖子已锁定,以防止对其内容进行不当编辑。帖子看起来与它看起来完全一样 - 它的内容没有问题。请不要标记它以引起我们的注意。
虽然确实要求正则表达式解析任意 HTML 就像要求初学者编写操作系统一样,但有时候解析一组有限的已知 HTML 也是合适的。
如果您有一小组 HTML 页面要从中抓取数据然后填充到数据库中,则正则表达式可能正常工作。例如,我最近想获得澳大利亚联邦代表的名称,政党和地区,我从议会的网站上获取了这些名称,政党和地区。这是一项有限的一次性工作。
正则表达式对我来说效果很好,设置速度非常快。
我认为这里的缺陷是 HTML 是Chomsky Type 2 语法(无上下文语法) ,RegEx 是Chomsky Type 3 语法(常规语法) 。由于 Type 2 语法基本上比 Type 3 语法更复杂(参见Chomsky 层次结构 ),因此在数学上不可能使用 RegEx 解析 XML。
但许多人会尝试,有些人甚至会声称成功 - 但直到其他人发现错误并完全搞砸了你。