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解析器库,您的生活会更简单。