gpt4 book ai didi

regex - HTML解析器如何工作?

转载 作者:行者123 更新时间:2023-12-04 08:46:09 26 4
gpt4 key购买 nike

我已经看到了幽默的线程并阅读了警告,而且我知道you don't parse HTML with regex。不用担心... 我不打算尝试

但是……这使我问:HTML解析器是如何编码的(包括编程语言的内置功能,例如DOM解析器和PHP的strip_tags)?他们采用什么机制来解析(有时格式不正确)标记?

我找到了sourceone coded in JavaScript,它实际上使用正则表达式来完成这项工作:

// Regular Expressions for parsing tags and attributes
var startTag = /^<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/,
endTag = /^<\/(\w+)[^>]*>/,
attr = /(\w+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;

他们都这样做吗?是否有常规的标准方法来编写HTML解析器?

最佳答案

我不知道这种风格是做事的“正常”方式。该方法比我所见过的大多数方法都要好,但是它仍然与this answer中所谓的“幼稚”方法过于接近。一方面,它不是要考虑HTML注释妨碍了事情的发展。它也有法律上的问题,但与实体无关。但是大多数此类方法都落在HTML注释中。

一种更自然的方法是使用词法分析器剥离 token ,就像显示的in this answer’s script一样,然后有意义地组合它们。该词法分析人员将能够足够容易地了解HTML注释。

您可以使用完整的语法来解决此问题,例如用于解析RFC 5322邮件地址的shown here。我在this answer中的第二个“奇怪”的解决方案中采用了这种方法。但这只是格式正确的HTML的完整语法,我只对几种不同的标记感兴趣。我已完全定义了那些标签,但没有为我无关的标签定义有效的字段。

关于regex - HTML解析器如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5038275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com