好吧,我正在寻找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个字符的单词.
好吧,寻找正则表达式删除短于字符的单词.
| 归档时间: |
|
| 查看次数: |
7097 次 |
| 最近记录: |