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

时间:2013-12-27 13:06:53

标签: java android regex

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

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

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

除了撇号('

之外,它还会删除所有标点和特殊字符

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

你可能会想出一些其他可以完成这两项任务的正则表达式。

1 个答案:

答案 0 :(得分:4)

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

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

如果您希望将包含letters和撇号'的字词与更多而不是3个字符进行匹配..

List<String> words = new ArrayList<String>();
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,}");