java - 拆分由逗号分隔的字符串,而不考虑括号中的逗号

标签 java regex string split

我有一个像这样的字符串

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*");

RegEx Demo

,(?![^()]*\)) 将匹配一个逗号,如果它后面没有跟一个非括号文本和 ),因此忽略() 中的逗号。

关于java - 拆分由逗号分隔的字符串,而不考虑括号中的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34660285/

相关文章:

c# - 从哪里开始使用 C# 或任何语言中的神经网络进行手写文本识别

regex - 文本消息与数千个正则表达式的高效匹配

regex - 我正在尝试使用包含 "awk"的 shell 脚本来针对文件运行

c# - 字符串中的 double 或整数?

c - 如何在C中正确返回字符串

java - 接缝吞没 JDBC 异常

java - 打包的 Spring boot 应用程序无法将其余 api 错误解析为消息

java - bufferedreader 后返回 null 的字符串

c# 正则表达式捕获重复的关键字值

java - myString.replaceAll(regex ,"") 未按预期工作