Haskell初學者在這里!
我正在嘗試決議HTML 字串并從中提取正文。我正在使用 GHC 版本 9.0.2 。我嘗試使用正則運算式提取它。我正在使用Text.Regex.TDFA(版本 1.3.1.2)。我在regex101.com檢查了我的正則運算式的功能。基于這個問題,我將其修改為符合 POSIX 擴展正則運算式。但由于某種原因,我的代碼(第 51 行)仍然無法匹配 HTML 的正文。
所以我的問題是為什么會發生這種情況以及如何解決它?還是有更好/更簡單的 HTML 正文提取方法?
謝謝大家。
uj5u.com熱心網友回復:
請不要使用正則運算式捕獲 HTML。HTML 是一種背景關系無關語言 [wiki],正則運算式(通常)只能決議常規語言 [wiki],因此無法捕獲 HTML。即使對于(非常)特定的問題,可以使用正則運算式來完成,它也會導致繁瑣的正則運算式難以撰寫、驗證和修復錯誤。
Haskell 有一個名為[hackage]的庫,它在決議 HTML 方面非常有效。例如,您可以使用以下命令提取標簽中的 HTML:scalpel <body>
{-# LANGUAGE OverloadedStrings #-}
import Text.HTML.Scalpel(innerHTML, scrapeStringLike)
scrapeStringLike myHtml (innerHTML "body")
使用myHtml包含頁面 HTML 的字串。可能您想要更高級的抓取并scalpel允許定義抓取器的層次結構,每個抓取器執行一個小任務來構建一個高級決議器。
uj5u.com熱心網友回復:
您快到了。
<body.*>太貪心了([\w|\W])字符集中不需要管道并且它缺少量詞<\/body>很好
你需要這個:
<body.*?>([\w\W]*)<\/body>
https://regex101.com/r/9rVCUQ/1
每個人都會想告訴你,你不應該使用正則運算式來決議/提取 html。使用 html 決議庫以獲得更可靠的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/462864.html
上一篇:有沒有一種干凈的方法可以在單個運算式中獲取串列的頭部和尾部?
下一篇:通過網路發送大型內容
