正则表达式删除所有短于n的单词

jan*_*nce 8 java regex

好吧,我正在寻找Java中的regexp,它删除所有短于3个字符的单词.我认为类似的东西\s\w{1,2}\s会抓住所有1和2个字母的单词(一个空格,一到两个单词字符和另一个空格),但它只是不起作用.我哪里错了?

Bil*_*ard 11

我的工作相当不错,但需要两次通过.

public static void main(String[] args) {
    String passage = "Well, I'm looking for a regexp in Java that deletes all words shorter than 3 characters.";
    System.out.println(passage);

    passage = passage.replaceAll("\\b[\\w']{1,2}\\b", "");
    passage = passage.replaceAll("\\s{2,}", " ");

    System.out.println(passage);
}
Run Code Online (Sandbox Code Playgroud)

第一遍用一个空格替换包含少于三个字符的所有单词.请注意,我必须在字符类中包含撇号才能消除,因为"我是"这个词在没有它的情况下给了我麻烦.您可能会在文本中找到其他特殊字符,您还需要在此处添加这些字符.

第二次传球是必要的,因为第一次传球留下了几个有双倍空间的地方.这只会将所有出现的2个或更多空格折叠为1.这取决于你是否需要保留这个,但我认为空间崩溃会更好.

输出:

好吧,我正在寻找Java中的regexp,它删除所有短于3个字符的单词.

好吧,寻找正则表达式删除短于字符的单词.