我写了一段代码来'编译'一个文件(主要是为我自己的做法)。它首先将所有形成文件的行加载到RAM中,然后读取文件。为了理解它写的是什么,我使用了正则表达式和String.matches()
和String.contains()
方法。现在我遇到了一个非常奇怪的问题,这是我从未有过的事情:程序结束时没有任何理由。它不会给出错误或异常,或者其他任何可能出错的指示器。用正则表达式代码似乎无端结束
这是我讲的部分:
else if (s.contains("interface")) {
if (s.matches("\\s*interface\\s*{\\s*")) { //The program seems to stop on this line
logger.info("Found properties block opener on line " + (i + 1) + ": " + s);
}
else if (s.matches("\\s*interface\\s*")) {
if (lines[i + 1].matches("\\s*{\\s*")) {
logger.info("Found properties block opener on lines " + (i + 1) + " and " + (i + 2) + ": " + s);
}
}
}
s
是String
搜索,lines[i + 1]
是下一行,我创建了一个记录器对象登录编译。
在Eclipse中使用调试器时,我发现当涉及到注释行时,它跳转到Pattern
类,然后停止。我的意思是,它打开了一个新的选项卡,其中包含Pattern
类的源代码,并且下一步它会终止,而不会给出任何逻辑原因或任何原因。
我的正则表达式有什么问题吗? (它试图寻找一个像这样的字符串:interface {
和else if
语句查找替代:
interface
{
我试图重新启动Eclipse,我认为有可能是有问题,但它并没有帮助。
如果需要更多的代码,只是发表评论告诉我
而“s”只是“interface {”,还是包含更多的东西? –