我的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