我正在尝试用逗号分割字符串,但是如果逗号用引号引起来,我不想分割。
这是我想要做的:
String s = "today,\"is, clear\",and sunny";
String[] split = s.split("(?>!\"[0-z]*),(?![0-z]*\")");
[split
的内容为["today", "\"is, clear\"", "and sunny"]
,但是我无法使正则表达式正常工作。
一个选项是使用否定的超前行,该断言断言仅当跟随even个双引号时才发生逗号分割。意识到双引号内的逗号后面总会有奇数个双引号,前提是您的引号始终是平衡的。
String s = "today,\"is, clear\",and sunny";
String[] parts = s.split(",(?!.*\"(?:.*\".*\")*$)");
System.out.println(Arrays.toString(parts));
此打印:
[today, "is, clear", and sunny]