我试图将一个句子分成一组字符串。我想在数组中保留所有单词,标点符号和空格。
例如:
“你好!我的名字是John Doe。”
将分为:
["Hello", "!", " ", "My", " ", "name", " ", "is", " ", "John", " ", "Doe"]
我目前有以下一行代码破坏了我的句子:
String[] fragments = sentence.split("(?<!^)\\b");
然而,这会遇到一个错误,它会计算一个标点符号,后跟一个空格作为单个字符串。如何修改我的正则表达式来解释这个问题?
答案 0 :(得分:2)
您可以尝试以下正则表达式:
(?<=\b|[^\p{L}])
"Hello! My name is John Doe.".split("(?<=\\b|[^\\p{L}])", 0)
// ⇒ ["Hello", "!", " ", "My", " ", "name", " ", "is", " ", "John", " ", "Doe", "."]