获取n在Java中使用正则表达式的单词数

Aym*_*ier 1 java regex split words count

我有一本书的一部分,有标点符号,换行符等等.我希望能够从文本中提取前n个单词,并将其分为5个部分.正则表达式使我神秘.这就是我想要的.我创建了一个索引大小为0的数组,包含所有输入文本:

public static String getNumberWords2(String s, int nWords){
    String[] m = s.split("([a-zA-Z_0-9]+\b.*?)", (nWords / 5));
    return "Part One: \n" + m[1] + "\n\n" + 
           "Part Two: \n" + m[2] + "\n\n" + 
           "Part Three: \n" + m[3] + "\n\n" +
           "Part Four: \n" + m[4] + "\n\n" + 
           "Part Five: \n" + m[5];
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Sea*_*wen 5

我认为最简单,最有效的方法是简单地重复找到一个"单词":

Pattern p = Pattern.compile("(\\w+)");
Matcher m = p.matcher(chapter);
while (m.find()) {
  String word = m.group();
  ...
}
Run Code Online (Sandbox Code Playgroud)

您可以通过修改正则表达式来改变"单词"的定义.我写的只是使用正则表达式的单词字符的概念,我想知道它是否比你想要做的更合适.但它不会包含引号字符,您可能需要在一个单词中允许.