除了括号中的空格以外的所有空格拆分字符串

ars*_*jii 10 java regex

可能重复:
根据正则表达式拆分字符串

我从未成为正规表达大师,所以我需要你的帮助!我有一个像这样的字符串:

String s = "a [b c] d [e f g]";
Run Code Online (Sandbox Code Playgroud)

我想使用空格作为分隔符来拆分此字符串 - 但我不想拆分[]括号内出现的空格.所以,从上面的例子中,我想要这个数组:

{"a", "[b c]", "d", "[e f g]"}
Run Code Online (Sandbox Code Playgroud)

有关什么正则表达式可以与之结合使用的任何建议,split以实现这一目标?


这是另一个例子:

"[a b] c [[d e] f g]"
Run Code Online (Sandbox Code Playgroud)

{"[a b]", "c", "[[d e] f g]"}
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 10

我认为这应该工作,使用负向前瞻 - 它匹配没有开括号的关闭括号之前的空格:

"a [b c] d [e f g]".split("\\s+(?![^\\[]*\\])");
Run Code Online (Sandbox Code Playgroud)

对于嵌套括号,您需要编写一个解析器,正则表达式无法承受无限级别,并且对于超过一个或两个级别而言过于复杂.例如,我的表达失败了

"[a b [c d] e] f g"
Run Code Online (Sandbox Code Playgroud)

  • 它没有编译 - 我得到"格式错误的正则表达式"错误 (2认同)