Java 正则表达式使用分隔符拆分文本,但不使用';当分隔符介于()

Java 正则表达式使用分隔符拆分文本,但不使用';当分隔符介于(),java,regex,scala,split,Java,Regex,Scala,Split,我想用,分隔符拆分Scala中的文本,但在,位于括号中时不拆分,而是提取,并忽略括号,例如拆分以下内容: 1,2(,)3 我应该得到一个数组,其中包含: `one` `two , three` 提前感谢(?![^()]*\),|\((?=,)|(?您可以使用此基于查找的正则表达式: (?![^)()]*\)),|\((?=,)|(?<=,)\) (?<!\)), *(?!\)) (? 在Java中: (?<!\\)), *(?!\\)) (? 它将示例输入分解为: o

我想用
分隔符拆分Scala中的文本,但在
位于括号中时不拆分,而是提取
并忽略括号,例如拆分以下内容:

1,2(,)3

我应该得到一个数组,其中包含:

`one`
`two , three`

提前感谢

(?![^()]*\),|\((?=,)|(?您可以使用此基于查找的正则表达式:

(?![^)()]*\)),|\((?=,)|(?<=,)\)
(?<!\)), *(?!\))
(?
在Java中:

(?<!\\)), *(?!\\))
(?
它将示例输入分解为:

  • one
  • 2(,)3

前后是否有
或者输入可以是:
一,二(foo,bar)三
也可以?@anubhava,
之前和之后,这项工作除非在拆分函数中使用,否则它将拆分
二(,)三个
两个
三个
。但是我想知道这个
(?![^)()]*\)是否负责删除
()
。您能解释一下您的解决方案是如何工作的吗?谢谢you@mnish这就是我写的为什么你需要加入最后三个来获得正确的匹配。它按
分割,而不是在
()
之间。或者它按
分割(
后接
。谢谢,但这会将示例字符串拆分为
1'和
2(,)3`