可能重复:
根据正则表达式拆分字符串
我从未成为正规表达大师,所以我需要你的帮助!我有一个像这样的字符串:
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)