java - 使用正则表达式在错误消息中拆分文件和行

标签 java regex

我得到的字符串是这样的

main.c:11: error: 'qz' undeclared (first use in this function)

像函数的参数。我需要使用正则表达式和拆分文件名 ( main.c )、第 (11) 行和消息( 'qz' undeclared (first use in this function) )。 我这样写正则表达式

private static Pattern patern=Pattern.compile("([a-zA-Z0-9_-]+\.c:)([0-9]+:)(.)*");

但它并没有 split 。谁能告诉我要使用什么正则表达式?

最佳答案

你至少需要转义那个\。尝试

"([a-zA-Z0-9_-]+\\.c:)([0-9]+:)(.)*"

相反。

这是一个演示:

import java.util.regex.*;

public class Test {

    public static void main(String[] args) {
        String input = "main.c:11: error: 'qz' undeclared (first use in this function)";

        Pattern p = Pattern.compile("([^:]+\\.c):(\\d+):(.*)");
        Matcher m = p.matcher(input);

        if (m.matches()) {
            System.out.println("File: " + m.group(1));
            System.out.println("Line: " + m.group(2));
            System.out.println("Message: " + m.group(3));
        }
    }
}

打印:

File: main.c
Line: 11
Message:  error: 'qz' undeclared (first use in this function)

另一种选择就是执行 input.split(":")

关于java - 使用正则表达式在错误消息中拆分文件和行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4780058/

相关文章:

java - 在 Java 中访问 Scala 元组元素的正确方法是什么?

java - web.xml 中映射的 Filter 实现中的 Spring 注入(inject)

java - 如何匹配map返回类型的key和value?

regex - 如何将反斜杠添加到get_option()

regex - perl regex 查找任何 5 的倍数

java - 使用正则表达式从使用 xeger java 库生成的字符串中解析 id

java - 线程中的异常 "AWT-EventQueue-0"java.lang.NullPointerException Java

java - 构造函数重载

javascript - 简单的正则表达式Excel提取

javascript - 有什么方法可以让我的 jquery 搜索更好吗?