是我从头开始创建html分析器的想法吗?
问题描述:
为了练习我的技能即时编写一个html解析器。我想到的想法:是我从头开始创建html分析器的想法吗?
- 定义我想通过正则表达式来标记化。
- 接受一些html作为字符串。
- 通过html字符串循环。
- 将有关令牌的信息(如内容和位置)保存为对象。
- 如果令牌具有另一个令牌,那么该令牌是父令牌的子对象。
完成对象图。
创建适当的获取者和设置者。
你认为这有意义吗?
答
正则表达式不适合用于沉重的HTML解析,例如: regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML。
最好的办法是使用state machine或tokeniser为基础的实现。
您还可以阅读有关解析HTML5 specification中HTML5的更多信息。
应该阅读着名的答案[你不能解析HTML与正则表达式](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454# 1732454) – charlietfl
HTML规范中的[HTML解析器的描述](https://html.spec.whatwg.org/multipage/syntax.html#parsing)是基于字符的并使用状态机,所以我会从看着这个灵感。 – Blender