Java 用antlr重写url

Java 用antlr重写url,java,antlr,Java,Antlr,我的java程序需要及时用html重写URL。我正在寻找合适的工具,不知道antlr是否在为我做这项工作 例如: <html><body> <img src="foo.jpg" /> </body></html> 应改写为: <html><body> <img src="http://foo.com/foo.jpg" /> </body></html> 我想一个字节

我的java程序需要及时用html重写URL。我正在寻找合适的工具,不知道antlr是否在为我做这项工作

例如:

<html><body>  <img src="foo.jpg" /> </body></html> 
应改写为:

<html><body>  <img src="http://foo.com/foo.jpg" /> </body></html> 

我想一个字节一个字节地读/写一个流。

正则表达式呢?

正如khmarbaise所说,首先要确定正则表达式是否可以做到这一点。但在某些情况下,他们不能[*],然后我认为,ANTLR可能真的是一个合法的选择

[*]有关这方面的数学背景,请参见

更新

现在您已经更新了您的问题,我明白了您真正想要做的事情:为了修改完整的HTML文件,我会使用类似于NekoHTML或类似的解析器:

然后您可以使用这些来提取URL。然后

只解析URL本身-e。G有了正则表达式,Java的URL类或者更好的:URI,或者ANTLR 修改解析后的URL 然后使用NekoHTML/再次写出HTML。。。
不要使用正则表达式来解析整个HTML文件!从理论上讲,您可以使用ANTLR来实现这一点,但要使其可靠地工作是非常困难的。

您能提供几个示例来反映您想要处理的一些实际情况吗?是的-当然:应该重写为:我想一个字节一个字节地读/写一个流…所以您将整个html文件解析为一个流。好吧,ANTLR可以很好地处理流,但是自己编写一个完整的html解析器绝非易事,我无法想象现在还没有任何工具可以做到这一点。所以,我想问这里的人是否知道这样一个工具,而不是问他们如何用ANTLR或类似的东西来帮助你创建这样一个东西。ANTLR和正则表达式有什么关系?@Bart:Regexes可以解析Chomsky类型3语法。ANTLR还可以解析Chomsky类型2上下文无关的内容。它可以在正则表达式不再强大的情况下发挥作用。因此,如果你需要对URL做一些非常复杂的事情——这就是我误解的方式——理解问题的原始版本——这可能是必要的。此外,即使您使用ANTLR只解析常规语言,它也比正则表达式干净得多,因为符号类似于BNF。使用ANTLR当然需要更多的开销,但要替换非常复杂的正则表达式,绝对值得考虑一下!巴特:当然,在问题更新后,看到作者只是想在foo.jpg前面加上一些东西,可能没有必要使用ANTLR…:-