正则表达式删除两个单词之间的停用词

时间:2013-11-19 11:07:49

标签: java regex stop-words

我有一组名为“停用词”的单词。现在我需要匹配两个单词,但是在这些单词之间可以在集合“停用词”中出现空格或单词,例如“能源”,“能源的力量”,“能源的力量”,“能源的力量”。 在停用词集中,还有“for,of,...”

我想获得没有停用词的“电力能源”。有可能吗?

2 个答案:

答案 0 :(得分:1)

查找子字符串将起作用。这将格式化

形式的任何短语
  

Word(停用词)+结束词 Word结束词

 String power = "power of energy";
 String[] toks = power.split("[\\s]+"); // in case of extra space between words.

 String removed = 
        power.substring(power.indexOf(toks[0]), power.indexOf(toks[0])
                                                    + toks[0].length())
        + " " + power.substring(power.indexOf(toks[toks.length - 1]), power.indexOf(toks[toks.length - 1 ]) 
                                                    + toks[toks.length - 1].length());

System.out.println(removed);
  

输出:电能

方法

public static String removeStopWord(String phrase){
    String[] toks = phrase.split("[\\s]+");

    String removed = 
        phrase.substring(phrase.indexOf(toks[0]), phrase.indexOf(toks[0])
                                                    + toks[0].length())
        + " " + phrase.substring(phrase.indexOf(toks[toks.length - 1]), phrase.indexOf(toks[toks.length - 1]) 
                                                    + toks[toks.length - 1].length());
    return removed;
}

答案 1 :(得分:1)

java的简单replaceAll()可以做到这一点:)

public class Replace {
public static void main(String[] args) {
String s="power of the world";
s=s.replaceAll("of|the|", "");
s=s.replaceAll("( )+", " ");
System.out.println(s);
}
}