亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

除了XHTML自包含標記之外,RegEx匹配開放標記

除了XHTML自包含標記之外,RegEx匹配開放標記

米琪卡哇伊 2019-05-20 13:43:41
我需要匹配所有這些開始標記:<p><a href="foo">但不是這些:<br /><hr class="foo" />我想出了這個,并希望確保我做對了。我只抓住了a-z。<([a-z]+) *[^/]*?>我相信它說:找一個小于,然后然后,查找(并捕獲)az一次或多次然后找到零個或多個空格找到任何字符零次或多次,貪婪/,然后找到一個大于我有這個權利嗎?更重要的是,你怎么看?
查看完整描述

10 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

雖然確實要求正則表達式解析任意 HTML就像要求初學者編寫操作系統一樣,但有時候解析一組有限的已知 HTML 也是合適的。

如果您有一小組HTML頁面要從中抓取數據然后填充到數據庫中,則正則表達式可能正常工作。例如,我最近想獲得澳大利亞聯邦代表的名稱,政黨和地區,我從議會的網站上獲取了這些名稱,政黨和地區。這是一項有限的一次性工作。

正則表達式對我來說效果很好,設置速度非??臁?/p>


查看完整回答
反對 回復 2019-05-20
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

我認為這里的缺陷是HTML是Chomsky Type 2語法(無上下文語法),RegEx是Chomsky Type 3語法(常規語法)。由于Type 2語法從根本上比Type 3語法更復雜(參見Chomsky層次結構),因此在數學上不可能使用RegEx解析XML。

但許多人會嘗試,有些人甚至會聲稱成功 - 但直到其他人發現錯誤并完全搞砸了你。


查看完整回答
反對 回復 2019-05-20
?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

不要聽這些家伙。如果你將任務分解成更小的部分,你完全可以使用正則表達式解析無上下文的語法。您可以使用腳本生成正確的模式,該腳本按順序執行以下每個操作:

  1. 解決停機問題。

  2. 方圓。

  3. 計算O(log n)或更少的旅行商問題。如果它不止于此,你將耗盡RAM并且引擎將掛起。

  4. 模式將非常大,因此請確保您有一個無損壓縮隨機數據的算法。

  5. 幾乎就在那里 - 將整個事物除以零。十分簡單。

我自己還沒完成最后一部分,但我知道我已經接近了。CthulhuRlyehWgahnaglFhtagnException由于某種原因,它一直在拋出s,所以我要將它移植到VB 6并使用On Error Resume Next。一旦我調查剛剛在墻上打開的這扇奇怪的門,我就會用代碼更新。嗯。

PS Pierre de Fermat也想出了如何做到這一點,但他寫的邊距不足以代碼。


查看完整回答
反對 回復 2019-05-20
?
米脂

TA貢獻1836條經驗 獲得超3個贊

這是我使用(?。┢ヅ銱TML標記的正則表達式:

<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+>

它可能不完美,但我通過大量 HTML 運行此代碼。請注意,它甚至會捕獲<a name="badgenerator"">出現在網絡上的奇怪內容。

我想讓它與自包含的標簽不匹配,你要么想要使用Kobi的負面后衛:

<(?:"[^"]*"['"]*|'[^']*'['"]*|[^'">])+(?<!/\s*)>

或者只是組合,如果沒有。

對于downvoters:這是來自實際產品的工作代碼。我懷疑讀這個頁面的人會得到這樣的印象:在HTML上使用正則表達式是社會可接受的。

警告:我應該注意,在CDATA塊,注釋,腳本和樣式元素存在的情況下,這個正則表達式仍然存在故障。好消息是,你可以擺脫使用正則表達式的人...


查看完整回答
反對 回復 2019-05-20
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

我建議使用QueryPath在PHP中解析XML和HTML。它與jQuery的語法基本相同,只是在服務器端。


查看完整回答
反對 回復 2019-05-20
  • 10 回答
  • 0 關注
  • 876 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號