我的Java程序需要重寫HTML中的URL(及時)。我正在尋找合適的工具,並想知道antlr是否爲我工作?URL重寫與antlr
例如:
<html><body> <img src="http://foo.com/foo.jpg" /> </body></html>
欲從讀/ /寫一個流(逐字節):
<html><body> <img src="foo.jpg" /> </body></html>
應該被重寫。
我的Java程序需要重寫HTML中的URL(及時)。我正在尋找合適的工具,並想知道antlr是否爲我工作?URL重寫與antlr
例如:
<html><body> <img src="http://foo.com/foo.jpg" /> </body></html>
欲從讀/ /寫一個流(逐字節):
<html><body> <img src="foo.jpg" /> </body></html>
應該被重寫。
正如khmarbaise所說,首先請確保,如果正則表達式可以做到這一點。但有些情況下,他們不能[*],然後我認爲,ANTLR可能確實是一個合法的選擇。
[*]本的數學背景,看http://en.wikipedia.org/wiki/Formal_grammar#The_Chomsky_hierarchy
更新
現在你更新你的問題,我看你真正想做的事:爲了修改一個完整的HTML文件,我會使用像NekoHTML或類似的解析器:http://www.benmccann.com/dev-blog/java-html-parsing-library-comparison/
然後,您可以使用這些來提取URL。然後
做不使用正則表達式來解析整個HTML文件!理論上你可以使用ANTLR,但要做到這一點非常困難。
ANTLR與正則表達式有什麼關係? – 2010-05-07 20:01:12
@Bart:正則表達式可以解析喬姆斯基3型語法。 ANTLR還可以解析喬姆斯基2型(上下文無關)。它可以踢,正則表達式不夠強大了。所以,如果你需要對URL做一些非常複雜的事情 - 那就是我的方式(錯誤 - )理解問題的原始版本 - 這可能是必要的。此外,即使您使用ANTLR來解析常規語言,它也可能比正則表達式更清晰,因爲符號與BNF類似。使用ANTLR需要更多的開銷,但要取代非常複雜的正則表達式,絕對值得考慮! – 2010-05-07 22:43:31
@Bart:當然,在問題更新之後(看到作者只是想在某些地方加上foo.jpg),ANTLR可能不需要...... :-) – 2010-05-07 22:49:11
正則表達式怎麼樣?
您能否提供一些反映您想要處理的真實案例的示例? – 2010-05-05 15:25:15
是 - 當然是:
應該重寫: 我想讀/ /寫流(逐字節)。 .. – jgray 2010-05-06 14:40:08所以你解析整個HTML文件(作爲一個流)。 AFAIK,ANTLR可以很好地處理數據流,但是自己編寫一個完整的html解析器並不是一件容易的事情,我無法想象沒有任何工具可以實現這一點。所以,如果他們知道這樣的工具,而不是要求幫助你用ANTLR(或類似的東西)創建這樣的事情,我會問這裏的人們。 – 2010-05-06 19:55:57