以逗号分隔的分隔字符串,不考虑方括号中的逗号

我有一个像

s="abc, 3rncd (23uh, sdfuh), 32h(q23q)89 (as), dwe8h, edt (1,wer,345,rtz,tr t), nope";

我想把它分成那些字符串

String[] parts={"abc", "3rncd (23uh, sdfuh)", "32h(q23q)89 (as)", "dwe8h", "edt (1,wer,345,rtz,tr t)", "nope"};

如果我简单地打电话给我,s.split(",")那么在修剪之后我会得到不同的结果,因为在某些字符串中,例如"3rncd (23uh,

sdfuh)",仍然有一个逗号。但我不想放在方括号中。有解决这个问题的优雅方法吗?

回答:

假设()没有嵌套和未转义。您可以使用以下方式进行拆分:

String[] arr = input.split(",(?![^()]*\\))\\s*");

正则演示

,(?![^()]*\))如果逗号后面没有非圆括号和),则将匹配逗号,从而忽略(和中的逗号)

以上是 以逗号分隔的分隔字符串,不考虑方括号中的逗号 的全部内容, 来源链接: utcz.com/qa/399696.html

回到顶部