我有一个字符串,
String string = "sdeLING9497896,\"kifssd9497777 999_13\",Kfsheis9497896e,ersdG9497896,aseLING9497896 erunk15426 \nEsea4521
\"\nSdfes451 45264\" \"kiseliog949775 959_13\"";
我可能在此字符串中包含空格,逗号,制表符或换行符。我的要求是使用空格,逗号,制表符和换行来拆分此字符串,但应排除双引号字符串中的空格。
我的示例代码:
public class RegExTest {
public static void main(String[] args) {
Set<String> idSet = new HashSet<String>();
String string = "sdeLING9497896,\"kipliog9497777 999_13\",KIPLING9497896e,ersdG9497896,aseLING9497896 erunk15426 \nEsea4521 \"\nSdfes451 45264\"";
String ids[] = string.split(**"NEED A REGEX HERE"**);
for (String id : ids) {
if (id.trim().length() > 0) {
idSet.add(id);
}
}
System.out.println(idSet);
}
}
我的期望是: sdeLING9497896, kifssd9497777 999_13, KIPLING9497896e, ersdG9497896, aseLING9497896, erunk15426, Esea4521, Sdfes451 45264, kiseliog949775 959_13
请指导我解决这个问题!
答案 0 :(得分:0)
您可以使用此正则表达式:
String[] tok = string.split("(?=((\\S*\\s){2})*\\S*$)[\\s,]+");
只有当\s
超出双引号时才会在,
或\s
上分开,确保在分隔符\s
后有偶数引号。