java - 在 Java 中使用正则表达式获取 n 个单词

标签 java regex count split words

我有一本书的一部分,包括标点符号、换行符等,我希望能够从文本中提取前 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];
}

谢谢!

最佳答案

我认为最简单、最高效的方法,就是简单地反复查找一个“词”:

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

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

关于java - 在 Java 中使用正则表达式获取 n 个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2793321/

相关文章:

java - gradle:将 spring 应用程序迁移到多项目构建

java - Android Studio 在警报对话框中显示图像

Python 正则表达式 : find a substring that doesn't contain a substring

javascript - 评论正则表达式

mysql - 如何通过 Laravel 中的 View 统计表中的用户数量?

java - JSP 中调用 session 属性

java - 我如何知道 Java Stream collect(Collectors.toMap) 是否并行化?

Java 正则表达式 : split comma-separated values but ignore commas in quotes

Javascript 计算字符串中的数字

mysql - 优化计数和选择查询