我正在读行,只需要保留文件名后的部分。我想过使用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("\"");
我错过了什么?
答案 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(".*\", ", "");
删除(替换为空白)所有内容,包括"双引号逗号空格"