如何在java regluar表达式中为常用词过滤器添加词列表

如何在java regluar表达式中为常用词过滤器添加词列表,java,regex,Java,Regex,下面是我的正则表达式,用于过滤一些常用词: copyInputString.replaceAll("\\b(" +"http"+ ")\\b", " "); 如何替换http以替换单词列表?我的意思是将一个单词对一个单词的列表替换为过滤 如何编写代码?我试过: String commonWords = "http + haha + ..."; 但它不起作用。需要帮助吗像这样使用管道操作符怎么样 String input = "Karel Alena Josef Petr Marta Vojt

下面是我的正则表达式,用于过滤一些常用词:

copyInputString.replaceAll("\\b(" +"http"+ ")\\b", " ");
如何替换http以替换单词列表?我的意思是将一个单词对一个单词的列表替换为过滤

如何编写代码?我试过:

String commonWords = "http + haha + ...";

但它不起作用。需要帮助吗

像这样使用管道操作符怎么样

String input = "Karel Alena Josef Petr Marta Vojtěch";
String regexp = "\\bAlena\\b|\\bMarta\\b";  
String output = input.replaceAll(regexp, " ");
assert("Karel   Josef Petr   Vojtěch".equals(output));
正则表达式应该是

String commonWordsRegex = "\\b(http|haha|commonWords)\\b";

将单词列表与|连接起来。

最佳方法取决于过滤的干扰单词数量、执行的替换类型以及处理的文本量

单字噪声 净化 如果您只是执行一些简单的操作,例如删除所有出现的http、otherword和其他Word,则可以使用OR语句为其生成正则表达式:

\bhttp |其他单词|其他单词\b

如果要清除大量的单字列表,并且要处理相对较短的字符串,则只需创建一个杂音字哈希集,然后对输入字符串进行标记化,以便检查每个标记是否为杂音字

定制替换 您可以使用单词和替换值将其设置为hashmap,而不是生成一组杂音词

多字噪声 净化 如果要清除多字噪声,第一种方法仍然有效:

\b短语一|短语二|四字噪音短语\b

如果名单变得很大,这也会变得丑陋

定制替换 如果您想用多词短语进行自定义替换,事情会变得更加复杂。您可以使用String.indexOfString循环来查看噪声短语是否在其中,您可以运行多个正则表达式替换,或者您可以在一个大的组合正则表达式中为每个单词创建唯一的捕获组:

\b短语一|短语二|四个单词短语\b

如果捕获的组为2,则短语1匹配。如果是3,则第2句匹配。等然后从hashmap/array/which中获取相应的替换值并将其插入

如果最终使用正则表达式而性能开始下降,请记住,通常可以组合多个表达式以实现更高效的替换过程:


苹果,苹果,苹果酱->苹果酱???

在列表中添加所有单词,然后按如下方式构建正则表达式:

List wordList = new ArrayList<String>();
// populate your wordList

// build the regex
String lstr = wordList.toString();
String regex  = lstr.substring(1, lstr.length()-1).replace(", ", "|");

// replacement
String replaced = copyInputString.replaceAll("\\b(" + regex + ")\\b", " ");

使用循环并测试列表中的每个元素?请包括示例输入和所需的输出。@不,我不认为循环是最好的方法,我认为最好的方法是将列表放在那里,我reckon@Justin好的,祝你好运。