我正在尝试使用 regex 将以下 String 转换为 String 元素数组:
"a,b,c,,1,19,d,U,1,0,,0,7"
这是我使用的正则表达式:
",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"
将此添加到 Java 代码中:
import java.util.Arrays;
public class TestRegex {
public static void main(String args[]){
final String line = "a,b,c,,1,19,d,U,1,0,,0,7";
final String[] row = line.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", -1);
Arrays.stream(row).forEach(element -> System.out.println("element : "+element));
}
}
印刷 :
element : a
element : b
element : c
element :
element : 1
element : 19
element : d
element : U
element : 1
element : 0
element :
element : 0
element : 7
到目前为止,一切都很好。如果我然后将"和添加\n到行变量: "a,b,c,,1,19,d,U,1,0,,0,7"\n" 元素未正确解析。
使用新的正则表达式更新代码:
public class TestRegex {
public static void main(String args[]){
final String line = "a,b,c,,1,19,d,U,1,0,,0,7\"\n";
final String[] row = line.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", -1);
Arrays.stream(row).forEach(element -> System.out.println("element : "+element));
}
}
印刷 :
element : a,b,c,,1,19,d,U,1,0,,0,7"
我可以修改字符串以替换 " 和 \n 的所有实例,但我正在尝试使用正则表达式。可以更新正则表达式以忽略 \n 和 " a 字符串的结尾 "a,b,c,,1,19 ,d,U,1,0,,0,7" ?
所以应该打印以下内容:
element : a
element : b
element : c
element :
element : 1
element : 19
element : d
element : U
element : 1
element : 0
element :
element : 0
element : 7