我有一个这种格式的长字符串(文件中的长单行):
"1":"Aname","2":"AnotherName","3":"Sempronio"
我想提取号码和姓名并将它们保存在 map
上。
我尝试过这个:
FileReader fileReader = null;
BufferedReader br = null;
File file = new File("./SingleLineFileNames.txt");
try {
fileReader = new FileReader(file);
br = new BufferedReader(fileReader);
String line;
Pattern p = Pattern.compile("\"(\\d+)\":\"([\\w-.' ]+)\"");
Matcher matcher;
while((line = br.readLine()) != null) {
matcher = p.matcher(line);
String name;
int i = 1;
while((name = matcher.group(i)) != null){
// save in map
i++;
}
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
finally {
try {
br.close();
fileReader.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
return null;
结果是java.lang.IllegalStateException:找不到匹配项
这是迭代组的正确方法吗?
我哪里错了?
最佳答案
首先在 ,
处拆分字符串 (String#split
),然后在 :
处拆分每个结果数组元素以获取键和值。有了这样的输入字符串,我想知道使用正则表达式大锤打破这些简单坚果的开发人员是什么样的受虐狂。
关于java - 正则表达式提取字符串,为什么我的模式不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22248814/