我的第一个要求是使用Java中的正则表达式从某些文本中提取所有单词。
以下代码对我来说非常完美
String[] words = text.split("[^\\w']+");
除了撇号('
)
我的下一个任务是提取单词有多个(比方说)3
个字符,更重要的是,我想在上面提到的正则表达式中执行此操作。
你可能会想出一些其他可以完成这两项任务的正则表达式。
答案 0 :(得分:4)
有趣的事实。 word
是单个不同的语音或书写元素,用于形成句子,通常在两侧都有空格。 \w
匹配(任意letter
,number
或underscore
)
如果没有更好地解释你想要实现的目标,目前还不清楚你究竟在问什么。
如果您希望将包含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,}");