从长度超过N个字符的文本中提取单词 – RegExp / Java / Android

我的第一个要求是使用Java中的正则表达式从一些文本中提取所有单词。

以下代码对我来说非常完美

String[] words = text.split("[^\\w']+"); 

除了撇号( ' )之外,它还会删除所有标点符号和特殊字符

我的下一个任务是提取超过(比方说) 3字符的单词,更重要的是,我想在上面提到的正则表达式中执行此操作。

您可能会想出一些其他可以执行这两项任务的正则表达式。

有趣的事实word是单个不同的语音或书写元素,用于形成句子,通常在两侧都有空格。 \w匹配(任何letternumberunderscore

如果没有更好地解释你想要完成什么,目前还不清楚你究竟在问什么。

如果要匹配包含letters和撇号'的单词超过3字符。

 List words = new ArrayList(); String s = "I want to have alot of money's when I am older."; Pattern p = Pattern.compile("[a-zA-Z']{4,}"); Matcher m = p.matcher(s); while (m.find()) { words.add(m.group()); } System.out.println(words); // [want, have, alot, money's, when, older] 

注意 :这匹配包含超过3字符的单词,如果您还想匹配包含3字符( foo )或更多的单词,则可以使用以下内容。

 Pattern p = Pattern.compile("[a-zA-Z']{3,}");