我写了一个解析器,它逐行读取文件并用正则表达式语句解析它。 (下面的正则表达式)
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!");
}
答案 0 :(得分:0)
你似乎缺少的是Pattern.quote
,如果必须从字面上读取参数,那么分裂参数就是一个正则表达式。
String[] line = result.split(Pattern.quote("..."));