逗号,空格加上某个单词的正则表达式是什么?

时间:2015-04-02 14:22:59

标签: java regex

我需要使用Java的split()方法拆分字符串。如何为特定单词的分隔符编写正则表达式模式?例如,“和”?

我得到了用于分割空格和逗号[,\\s]的模式,但我想添加单词and,以便它也成为分隔符。

我尝试了许多组合,包括[,\\s]|(and),但没有运气。

3 个答案:

答案 0 :(得分:3)

如果没有输入和所需的输出,确实不确定,但您可以将最后的模式更改为:\\s(?!and|,)|\\s*,\\s*|\\s+and\\s+

例如:

String toSplit = "Blah,blah, foo ,bar and blah again";
System.out.println(
    Arrays.toString(
        toSplit.split(
//            ┌ whitespace not followed by "and" or ","
//            |           ┌ or
//            |           | ┌ 0/more whitespace, ",", 0/more whitespace
//            |           | |       ┌ or
//            |           | |       |┌ 1/more whitespace, "and", 1/more ws
//            |           | |       ||
             "\\s(?!and|,)|\\s*,\\s*|\\s+and\\s+"
        )
    )
);

<强>输出

[Blah, blah, foo, bar, blah, again]

答案 1 :(得分:1)

您可以尝试:

String[] toks = input.split( "\\s*\\band\b\\s*|[,\\s]" );

答案 2 :(得分:0)

您可以使用交替运算符。这是一个sample program

String string = "My mother and I";
String[] parts = string.split("(?:[,\\s]|and)");
for (int i=0; i<parts.length; i++) {
    System.out.println(parts[i]);
}

输出:

My                                                                                                                                                                                                                                                     
mother                                                                                                                                                                                                                                                 


I