如何拆分逗号分隔的字符串,但在Java中排除一些包含逗号的单词

mac*_*ers 3 java regex string

假设我们有以下字符串:

"test01,test02,test03,exceptional,case,test04"

我想要的是将字符串拆分为字符串数组,如下所示:

["test01","test02","test03","exceptional,case","test04"]

我怎么能用Java做到这一点?

anu*_*ava 7

这种负面的外观正则表达式应该适合你:

(?<!exceptional),|,(?!case)
Run Code Online (Sandbox Code Playgroud)

工作演示

Java代码:

String[] arr = str.split("(?<!exceptional),|,(?!case)");
Run Code Online (Sandbox Code Playgroud)

说明:

如果这两个条件中的任何一个满足,则此正则表达式匹配逗号:

  1. 逗号前面没有exceptional使用负面lookbehind 的单词(?<!exceptional)
  2. 逗号后面没有case使用否定前瞻的单词(?!case)

当它被包围exceptional并且case在任何一侧时,它实际上不允许分裂逗号.