public static int getWordCount(String sentence) {
return sentence.split("(([a-zA-Z0-9]([-][_])*[a-zA-Z0-9])+)", -1).length
+ sentence.replaceAll("([[a-z][A-Z][0-9][\\W][-][_]]*)", "").length() - 1;
}
我的意图是计算一个句子中单词的数量。这个函数的输入是一个长句子,最多可能有255个单词。
- 单词内可以使用连字符或下划线
- 该函数只应计算有效单词,即特殊字符不应被计入。例如,&&&& 或 #### 不应被视为单词。
上述正则表达式运行良好,但当单词内出现连字符或下划线时,例如:co-operation,计数返回为2,而不是1。能否有人提供帮助?
\w
无法匹配连字符,但是[-\w]
可以。或者在上述情况下使用(\w+(-?\w+)*)
或类似语法。 - dhke[[a-z][A-Z][0-9][\\W][-][_]]
与[a-zA-Z0-9\\W\\-_]
相同,后者更容易阅读(并且可以看出由于a-zA-Z0-9_
与\W
的组合,此正则表达式将匹配每个字符,这可能不是您想要的)。另外,([-][_])*
与(-_)*
相同。 - Pshemo