Java 如果不在方括号或圆括号内,则按逗号拆分字符串

Java 如果不在方括号或圆括号内,则按逗号拆分字符串,java,regex,Java,Regex,我有一个长字符串,只要逗号不在方括号或圆括号内,我想通过用逗号将其拆分来将其设置为数组。我尝试了一些变化,但没有得到我想要的 例1: 哈利·波特、赫敏、西弗勒斯、斯内普 返回: 哈利·波特 赫敏 西弗勒斯,斯内普 例2: 《哈利·波特》,《密室》,《赫敏》,《奥利凡德》,《魔杖》 返回: 哈利·波特 还有,密室,秘密 赫敏 奥利凡德,魔杖 您可以使用以下带有全局标志的正则表达式 ,(?![^\(\[]*[\]\)]) 这是一本书。 它的灵感来自。您可以使用以下带有全局标志的正则表达式 ,(?!

我有一个长字符串,只要逗号不在方括号或圆括号内,我想通过用逗号将其拆分来将其设置为数组。我尝试了一些变化,但没有得到我想要的

例1:

哈利·波特、赫敏、西弗勒斯、斯内普 返回: 哈利·波特 赫敏 西弗勒斯,斯内普 例2:

《哈利·波特》,《密室》,《赫敏》,《奥利凡德》,《魔杖》 返回: 哈利·波特 还有,密室,秘密 赫敏 奥利凡德,魔杖
您可以使用以下带有全局标志的正则表达式

,(?![^\(\[]*[\]\)])
这是一本书。
它的灵感来自。

您可以使用以下带有全局标志的正则表达式

,(?![^\(\[]*[\]\)])
这是一本书。
它的灵感来自。

@Marc-我看到了这个问题,但我仍然不清楚如何解释我所寻找的两种情况。重新打开,因为这个问题是关于括号和括号的:完整的答案更难。@Bathsheba很好的回答,但我觉得值得特别回答,虽然你找到的答案可能足以回答OP.@Marc-我看到了这个问题,但我仍然不清楚如何解释我正在寻找的两个条件。重新打开,因为这个问题是关于括号和括号的:完整的答案更难。@Bathsheba很好,但我认为这值得特别回答,虽然你的答案很好,可能就足够了。