有些場景是不適合用“正則表達式”的

最近在csdn論壇看到這樣一個問題:

 

高分求一正則表達式

內容可能是純淨的文本 或者 含有html標籤
如:fsdfsfs <font color="sla tegra y">撒旦飛灑a 撒范德薩...a </font>fsfdsfsdfds

要實現:將html標籤外的a 替換成 b  而標籤體內的a 不受影響即上段內容中 <font>標籤中 color屬性值中的字符a不能被替換
希望能給出正則表達式以及替換方法

(原貼:http://topic.csdn.net/u/20100302/15/d15498be-97bb-448b-9f5b-b3ba7a6e111d.html

結果就一大堆人在苦思冥想各種正則的解法。

正則表達式在匹配複雜substring的時候確實有其作用。但是這種對substring以外有特別要求的情況卻不應合適。

就算在某個“正則實現”中可以辦到(據說.net中這種就可以辦到),但是由於每個實現環境之間都有可能不同grep vi 或者js 或者java都會有所區別。

 

而就解決該問題而言使用簡易“詞法掃描”更合適。而且其要求是針對mark類語法進行判別,這裏甚至不用“回溯”的詞法掃瞄。

個人提供如下方式,其實就是“編譯原理中”最最基本的東西了:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章