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

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

為什么用regex解析XML是個壞主意?

為什么用regex解析XML是個壞主意?

慕容3067478 2019-06-25 15:19:55
為什么用regex解析XML是個壞主意?我只是回顧了我之前寫的一篇文章,注意到很多人建議我不使用Regex來解析XML。在這種情況下,XML相對簡單,Regex沒有造成任何問題。我還解析了許多其他代碼格式,因此為了一致性起見,這是有意義的。但我很好奇這在其他情況下會有什么問題。這僅僅是一個“不要重新發明車輪”的問題嗎?
查看完整描述

3 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

真正的問題是嵌套標記。嵌套標記很難用正則表達式處理。有可能平衡匹配,但這只在.NET中可用,可能還有其他幾種版本。但是即使有了平衡匹配的能力,一個錯誤的評論也有可能拋棄正則表達式。

例如,這是一個很難解析的問題.

<div>
    <div id="parse-this">
        <!-- oops</div> -->
        try to get this value with regex    </div></div>

您可以使用正則表達式搜索這樣的邊緣情況數小時,并可能會找到解決方案。但實際上,當有專門的XML、XHTML和HTML解析器能夠更可靠、更有效地完成這項工作時,就沒有意義了。


查看完整回答
反對 回復 2019-06-25
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

這一點在這里已經討論過很多次了。見A.

您能提供一些示例,說明為什么用regex解析XML和HTML很困難嗎?

為什么不能使用regex解析HTML/XML:一種外行術語的正式解釋

只需按照屏幕右側的鏈接找到更多答案。

我的結論是:

簡單,因為正則表達式不是解析器,這是一個可以找到的工具模式.

如果您想在(ht\x)ml文件中找到一個非常特定的模式,那么繼續,regex是最好的選擇。

但是,如果您要在每個foo標記中搜索可能具有不同順序的屬性、可以嵌套的屬性、格式錯誤的屬性(并且仍然有效),那么就使用解析器,因為這不再是模式匹配了。


查看完整回答
反對 回復 2019-06-25
?
一只萌萌小番薯

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

XML不是一種常規語言(這是一個技術術語),因此您永遠無法使用正則表達式正確地解析它。您可能在99%的時間內都是成功的,但隨后有人會找到一種編寫XML的方法,它會拋出您。

如果你正在寫一種屏幕刮刀,那么99%的成功率就足夠了。對于大多數應用程序來說,情況并非如此。


查看完整回答
反對 回復 2019-06-25
  • 3 回答
  • 0 關注
  • 665 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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