我有一个String
字符串,想要根据标点符号和空格进行分割。应该使用什么正则表达式作为split()
方法的参数?
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
String myString = "item1, item2, item3";
String[] tokens = myString.split(", ");
for (String t : tokens){
System.out.println(t);
}
/*output
item1
item2
item3
*/
str.split(" ,.!?;")
对于英语来说,这是一个不错的开始。你需要根据数据和所使用的语言进行改进。
\pP
匹配所有标点符号,但\s
并不匹配所有空格。实际上,它忽略了其中的20个。Java的字符类快捷方式有问题。\s
的正确模式是"[\u0009\u000A-\u000D\u0020\u0085\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]". - tchrist