java - 带有正则表达式的代码似乎无缘无故结束

标签 java regex eclipse

我写了一段代码来“编译”一个文件(主要是为了我自己的练习)。它首先将文件中的所有行加载到 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 是要搜索的 Stringlines[i + 1] 是下一行,我创建了一个记录器对象来记录编译。

使用Eclipse 中的调试器,我发现当遇到注释行时,它会跳转到Pattern 类,然后就停止了。我的意思是它打开一个包含 Pattern 类源代码的新选项卡,下一步它终止,没有给出任何逻辑原因,或者根本没有任何原因。

我的正则表达式有问题吗? (它尝试搜索这样的字符串:interface {else if 语句寻找替代方案:

interface
{

我尝试重新启动 Eclipse,因为我认为那里可能有问题,但没有帮助。

如果需要更多代码,请发表评论告诉我。

最佳答案

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

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

关于java - 带有正则表达式的代码似乎无缘无故结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23768838/

相关文章:

java - 比较和通配符泛型

java - Jackson 通过继承进行反序列化

python - 每 64 个字符插入换行符

javascript - 需要一些帮助来改进正则表达式

java - import cannot be resolved 错误如何解决?

java - 如何使用maven下载具有所有依赖项的jar?

java - MouseMotion 监听器不工作

regex - 根据空格和括号从字符串中提取单词

java - 对于 Eclipse 中的强制/已知错误,抑制 JUnit 中的错误消息吗?

java - Android中如何从ListView和Adapter中获取选中的文本?