2014-05-20 33 views
3

我写了一段代码来'编译'一个文件(主要是为我自己的做法)。它首先将所有形成文件的行加载到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); 

     } 

    } 

} 

sString搜索,lines[i + 1]是下一行,我创建了一个记录器对象登录编译。

在Eclipse中使用调试器时,我发现当涉及到注释行时,它跳转到Pattern类,然后停止。我的意思是,它打开了一个新的选项卡,其中包含Pattern类的源代码,并且下一步它会终止,而不会给出任何逻辑原因或任何原因。

我的正则表达式有什么问题吗? (它试图寻找一个像这样的字符串:interface {else if语句查找替代:

interface 
{ 

我试图重新启动Eclipse,我认为有可能是有问题,但它并没有帮助。

如果需要更多的代码,只是发表评论告诉我

+0

而“s”只是“interface {”,还是包含更多的东西? –

回答

3

{是需要转义特殊的正则表达式的元字符使用这个表达式:。

s.matches("\\s*interface\\s*\\{\\s*") 
+2

用于定义[重复](http://www.regular-expressions.info/repeat.html#limit),即'。{1,3}' – Sam

相关问题