Java 用antlr重写url
我的java程序需要及时用html重写URL。我正在寻找合适的工具,不知道antlr是否在为我做这项工作 例如: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> 我想一个字节
<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…:-