Java 只有当某个模式不匹配时,我如何使用正面和负面lookbehind进行匹配';它前后不匹配吗?

Java 只有当某个模式不匹配时,我如何使用正面和负面lookbehind进行匹配';它前后不匹配吗?,java,regex,string,regex-lookarounds,Java,Regex,String,Regex Lookarounds,我试图用逗号分割字符串,但是如果逗号被引号包围,我不想分割 以下是我试图做的: String s = "today,\"is, clear\",and sunny"; String[] split = s.split("(?>!\"[0-z]*),(?![0-z]*\")"); split的内容将是[“今天”,“是,清晰”,“晴朗”],但我很难让正则表达式正常工作。一个选项是使用负前瞻,它断言只有当后面有偶数个双引号时才会发生逗号拆分。请注意,双引号内的逗号后面总是有奇数个双引号,假设您

我试图用逗号分割字符串,但是如果逗号被引号包围,我不想分割

以下是我试图做的:

String s = "today,\"is, clear\",and sunny";
String[] split = s.split("(?>!\"[0-z]*),(?![0-z]*\")");

split
的内容将是
[“今天”,“是,清晰”,“晴朗”]
,但我很难让正则表达式正常工作。

一个选项是使用负前瞻,它断言只有当后面有偶数个双引号时才会发生逗号拆分。请注意,双引号内的逗号后面总是有奇数个双引号,假设您的引号总是平衡的

String s = "today,\"is, clear\",and sunny";
String[] parts = s.split(",(?!.*\"(?:.*\".*\")*$)");
System.out.println(Arrays.toString(parts));
这张照片是:

[today, "is,  clear", and sunny]

这是一个Java问题,但正则表达式应该仍然适用。如果使用CSV解析器库,您的生活会更简单。