Java正则表达式沿着单词,标点符号和空格分割,并将所有数据保存在一个数组中

时间:2017-09-15 00:39:46

标签: java arrays regex string split

我试图将一个句子分成一组字符串。我想在数组中保留所有单词,标点符号和空格。

例如:

“你好!我的名字是John Doe。”

将分为:

["Hello", "!", " ", "My", " ", "name", " ", "is", " ", "John", " ", "Doe"]

我目前有以下一行代码破坏了我的句子:

String[] fragments = sentence.split("(?<!^)\\b");

然而,这会遇到一个错误,它会计算一个标点符号,后跟一个空格作为单个字符串。如何修改我的正则表达式来解释这个问题?

1 个答案:

答案 0 :(得分:2)

您可以尝试以下正则表达式:

(?<=\b|[^\p{L}])
"Hello! My name is John Doe.".split("(?<=\\b|[^\\p{L}])", 0) 
// ⇒ ["Hello", "!", " ", "My", " ", "name", " ", "is", " ", "John", " ", "Doe", "."]