如果不在引号之间,则在空间拆分

时间:2011-05-10 07:14:48

标签: java regex

我试过这个:

 +|(?!(\"[^"]*\"))

但它不起作用。 我还能做些什么让它发挥作用? 顺便说一句,我使用java的string.split()。

3 个答案:

答案 0 :(得分:17)

试试这个:

[ ]+(?=([^"]*"[^"]*")*[^"]*$)

只有当这些空格后跟零或偶数个引号(一直到字符串的末尾!)时才会在一个或多个空格上分割。

以下演示:

public class Main {
    public static void main(String[] args) {
        String text = "a \"b c d\" e \"f g\" h";
        System.out.println("text = " + text + "\n");
        for(String t : text.split("[ ]+(?=([^\"]*\"[^\"]*\")*[^\"]*$)")) {
            System.out.println(t);
        }
    }
}

产生以下输出:

text = a "b c d" e "f g" h

a
"b c d"
e
"f g"
h

答案 1 :(得分:0)

这有用吗?

var str="Hi there"
var splitOutput=str.split(" ");

//splitOutput[0]=Hi
//splitOutput[1]=there

抱歉,我误解了你的问题 从 Bart的解释\s(?=([^"]*"[^"]*")*[^"]*$)[ ]+(?=([^"]*"[^"]*")*[^"]*$)

添加此内容

答案 2 :(得分:0)

这是你在找什么?

input.split("(?<!\") (?!\")")