java - 正则表达式提取字符串,为什么我的模式不起作用?

标签 java regex file-io

我有一个这种格式的长字符串(文件中的长单行):

"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/

相关文章:

c# - 如何从 C# 中的 ListView 写入 XML 文件

excel - 在 VBA 中使用 "Print"时的空格

android - CSVReader 和 android

java - 将文本字段数据附加到 java 中的现有 JSON 文件

java - 如何在 log4j.properties 文件中设置 filePermissions

regex - GA的正则表达式,包含字符串

ruby - Regexp.escape 的反义词是什么?

java - 协助 Java 程序计算二进制数字

java - 扩展抽象类和实现接口(interface)的组合

Python正则表达式如何找到以给定单词开头并以两个单词之一结尾的子字符串