如何根据标点符号和空格分割字符串?

and*_*and 7 java regex

我有一个String我想根据标点符号和空格分割.该split()方法的正则表达式参数应该是什么?

Pau*_*sik 15

抛出一些奇怪处理的代码:(请注意,它会在输出循环中跳过空标记.这很快且很脏.)您可以将需要分割和删除的任何字符添加到正则表达式模式中.(tchrist是对的.\ s的内容很糟糕,只能在一些非常简单的情况下使用.)

public class SomeClass {
    public static void main(String args[]) {
        String input = "The\rquick!brown  - fox\t\tjumped?over;the,lazy\n,,..  \nsleeping___dog.";

        for (String s: input.split("[\\p{P} \\t\\n\\r]")){
            if (s.equals("")) continue;
            System.out.println(s);
        }
    }
}


INPUT:

The
quick!brown  - fox      jumped?over;the,lazy
,,..  
sleeping___dog.

OUTPUT:

The
quick
brown
fox
jumped
over
the
lazy
sleeping
dog
Run Code Online (Sandbox Code Playgroud)

  • 嗯,不,那不对.`\ pP`匹配所有标点符号,但`\ s`**不匹配所有空格.事实上,它忽略了其中的20个.Java的字符类快捷方式已被破坏.'\ s`的正确模式是"[\\ u0009 \\ u000A - \\ u000D \\ u0020 \\ u0085 \\ u00A0 \\ u1680 \\ u180E \\ u2000 - \\ u200A \\ u2028 \\ u2029\\ u202F \\ \\ u205F U3000]". (2认同)