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

标签 java arrays regex string split

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

例如:

“你好!我的名字是约翰·多伊。”

将分为:

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

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

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

但是,这会遇到错误,它将标点符号后跟空格计为单个字符串。如何修改我的正则表达式来解决这个问题?

最佳答案

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

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

关于Java 正则表达式沿着单词、标点符号和空格进行分割,并将所有内容保存在一个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46230062/

相关文章:

java - Db4o 数据连接错误

java - 如何将 POJO 转换为保留类型的映射?

java - JList - 选择选项

javascript - 在数组中的特定数字范围之间迭代

python - 如何从 pandas 数据框中使用正则表达式删除答案中的点号 : '(i)' , '(ii)' 、 '(iii)' ?

java - 为什么 scheduleAtFixedRate - scheduleWithFixedDelay 方法不使用 Callable<V>

javascript - 在 php 中使用 javascript 数组内容

javascript - 数组数组上的 Lodash 属性迭代器

javascript - 正则表达式拆分字符串 'DB415.DBD21.3'

java - 正则表达式: Consecutive Repetitions with a Letter In Between