使用正则表达式分离结果

时间:2018-01-19 13:00:28

标签: java regex parsing

我写了一个解析器,它逐行读取文件并用正则表达式语句解析它。 (下面的正则表达式)

case "countries":
            pattern = "\\\"(.+?)\\\"(\\s+)?(\\((.+?)\\))?(\\s+)?(\\{(.+?)\\(\\#(.+?)\\)\\})?(\\s+)?(.+)";
            substitution = "$1, $4, $7, $8, $10";
            break;

这将输出一个列表,其中包含我想要的所有组,每个组用逗号分隔。 (通过result.split(“,”);) 现在让我说我不想使用逗号,而是使用|或*。将逗号更改为任何其他字符串似乎没有任何改变。我错过了什么?

try (CSVWriter csvWriter = new CSVWriter(new FileWriter(myLocalPath + "CSV/" + choice.toLowerCase() + ".csv")))
{
    Pattern r = Pattern.compile(pattern);

    while (br.readLine() != null)
    {
        String nextLine = br.readLine();

        Matcher matcher = r.matcher(nextLine);

        String result = matcher.replaceAll(substitution);

        String[] line = result.split("lorem");

        csvWriter.writeNext(line, false);
    }
}catch(Exception e){
    System.out.println(e);
    System.out.println("Parsing done!");
}

1 个答案:

答案 0 :(得分:0)

你似乎缺少的是Pattern.quote,如果必须从字面上读取参数,那么分裂参数就是一个正则表达式。

String[] line = result.split(Pattern.quote("..."));