2017-01-16 58 views
0

爲了練習我的技能即時編寫一個html解析器。我想到的想法:是我從頭開始創建html分析器的想法嗎?

  • 定義我想通過正則表達式來標記化。
  • 接受一些html作爲字符串。
  • 通過html字符串循環。
  • 將有關令牌的信息(如內容和位置)保存爲對象。
  • 如果令牌具有另一個令牌,那麼該令牌是父令牌的子對象。
  • 完成對象圖。

  • 創建適當的獲取者和設置者。

你認爲這有意義嗎?

+0

應該閱讀着名的答案[你不能解析HTML與正則表達式](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454# 1732454) – charlietfl

+1

HTML規範中的[HTML解析器的描述](https://html.spec.whatwg.org/multipage/syntax.html#parsing)是基於字符的並使用狀態機,所以我會從看着這個靈感。 – Blender

回答

1

正則表達式不適合用於沉重的HTML解析,例如: regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML

最好的辦法是使用state machinetokeniser爲基礎的實現。

您還可以閱讀有關解析HTML5 specification中HTML5的更多信息。

+0

雖然我如何標記文本?我不能想到除了一些簡單的正則表達式或使用拆分 – Asperger

+0

我只需要定義像白色空間的分隔符 – Asperger