用于解析csv中的文件扩展名的正则表达式

时间:2014-05-27 07:33:44

标签: java regex

我正在读行,只需要保留文件名后的部分。我想过使用reg表达式,但我似乎无法找到匹配项: 我的尝试是:

Pattern p = Pattern.compile("\"\\w+\\.jpg\",\\s{1}");
Matcher m = p.matcher("\"0f23af5c71e3f9d7f59ab14277e2023.jpg\", 10.0, 45.0, 1.0, 2.0, 1.0, 1.0, 1.0, 2.0, 1.0, 3.0, 3.0, 0.0, 0.0, 1.0, 3.0, 1.0, 5.0, 0.0"); 

通常我想解析包含以下数据的String line

"0f23af5c71e3f9d7f59ab14277e2023.jpg", 10.0, 45.0, 1.0, 2.0, 1.0, 1.0, 1.0, 2.0, 1.0, 3.0, 3.0, 0.0, 0.0, 1.0, 3.0, 1.0, 5.0, 0.0
"0f23af5c71e3f9d7f59ab14277e2023.jpg", 139.0, 67.0, 0.0, 7.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.0, 1.0, 1.0, 3.0, 2.0, 4.0, 1.0
"0f23af5c71e3f9d7f59ab14277e2023.jpg", 205.0, 70.0, 0.0, 0.0, 0.0, 2.0, 2.0, 0.0, 1.0, 3.0, 5.0, 0.0, 0.0, 2.0, 3.0, 0.0, 4.0, 3.0

并且每行只保留10.0, 45.0, 1.0, 2.0, 1.0, 1.0, 1.0, 2.0, 1.0, 3.0, 3.0, 0.0, 0.0, 1.0, 3.0, 1.0, 5.0, 0.0等部分。

即使仅",我似乎无法找到匹配项:

Pattern p = Pattern.compile("\"?"); // or even
Pattern p = Pattern.compile("\""); 

我错过了什么?

2 个答案:

答案 0 :(得分:1)

这对你有用:

   String str = "\"0f23af5c71e3f9d7f59ab14277e2023.jpg\", 10.0, 45.0, 1.0, 2.0, 1.0, 1.0, 1.0, 2.0, 1.0, 3.0, 3.0, 0.0, 0.0, 1.0, 3.0, 1.0, 5.0, 0.0";
   str = str.replaceAll(".*jpg\",(.*)", "$1");

修改

根据OP的要求,这是您修改过的代码,只需检查模式。

    Pattern p = Pattern.compile("\"\\w+\\.jpg\",\\s(.*)");
    Matcher m = p.matcher("\"0f23af5c71e3f9d7f59ab14277e2023.jpg\", 10.0, 45.0, 1.0, 2.0, 1.0, 1.0, 1.0, 2.0, 1.0, 3.0, 3.0, 0.0, 0.0, 1.0, 3.0, 1.0, 5.0, 0.0");

    if(m.matches()) {
        System.out.println(m.group(1));
    }

答案 1 :(得分:1)

我更喜欢使用replaceAll() 删除不需要的部分:

String numbers = input.replaceAll(".*\", ", "");

删除(替换为空白)所有内容,包括"双引号逗号空格"