Java 带有数字和数字组的复杂正则表达式

Java 带有数字和数字组的复杂正则表达式,java,regex,regex-lookarounds,Java,Regex,Regex Lookarounds,我有这样的字符串作为输入: (1,3,4,(3,4,21),55,69,12,(3,8),9) 我想要这个输出,作为数组或字符串列表 1 - 3 - 4 - (3,4,21) - 55 - 69 - 12 - (3,8) - 9 有人能帮忙吗?我试过几次regex,但运气不好 编辑:请注意,输出中的“-”表示同一数组或列表的不同元素,而不是指定的字符 示例:数组[0]=“1”;数组[1]=“3”;数组[3]=“(3,4,21)” 您可以尝试此正则表达式: ,(?!(?:(?:[^\(\)]*

我有这样的字符串作为输入:

(1,3,4,(3,4,21),55,69,12,(3,8),9)
我想要这个输出,作为数组或字符串列表

1 - 3 - 4 - (3,4,21) - 55 - 69 - 12 - (3,8) - 9
有人能帮忙吗?我试过几次regex,但运气不好

编辑:请注意,输出中的“-”表示同一数组或列表的不同元素,而不是指定的字符


示例:数组[0]=“1”;数组[1]=“3”;数组[3]=“(3,4,21)”

您可以尝试此正则表达式:

,(?!(?:(?:[^\(\)]*[\(\)]){2})*[^\(\)]*$)
这将匹配所有应替换为- 或者您也可以按上述正则表达式进行拆分

说明

逻辑是找到一个逗号,后面不跟偶数个括号(和

示例源():


您可以尝试以下正则表达式:

,(?!(?:(?:[^\(\)]*[\(\)]){2})*[^\(\)]*$)
这将匹配所有应替换为- 或者您也可以按上述正则表达式进行拆分

说明

逻辑是找到一个逗号,后面不跟偶数个括号(和

示例源():


我建议不要使用正则表达式。是的…写一个解析器。输出中应该有“-”和69之间的空格吗?刚刚编辑了我的问题,谢谢Pzremyslaw Moskal。我建议不要使用正则表达式。是的…写一个解析器。输出中应该有“-”和69之间的空格吗?刚刚编辑了我的问题,谢谢Pzremyslaw Moskal
[1, 3, 4, (3,4,21), 55, 69, 12, (3,8), 9]