gpt4 book ai didi

java - 单个单词的正则表达式

转载 作者:行者123 更新时间:2023-11-30 04:03:38 25 4
gpt4 key购买 nike

我正在 Java 中对文本文件中的内容运行过滤器。我已经把所有标点符号都去掉了。现在我需要去掉一些常用词。

我正在测试字符串“我有一个梦想”。我的常用词列表会过滤掉“我”、“有”和“一个”,只留下“梦想”。我当前的代码让我用“drem”过滤掉“a”和“dream”中的“a”。

我不知道如何解决这个问题。这是我当前的代码。

public String removeStop (String file)
{
Scanner scan = new Scanner(file);
String word;
while(scan.hasNext()){
word = scan.next();
if(sw.contains(word)){
file=file.replaceAll(word, "") ;
}
}
return file;
}

sw 是一个具有 boolean 函数(包含)的对象,它告诉我“word”是否存在于我应该过滤掉的单词列表中。

问题:如何过滤掉单词“a”而不过滤其他单词中的“a”,例如“dream”,过滤后会变成“drem”?我认为这个问题很容易从解释中推断出来,但我想不是。希望这足够明确,不会被关闭

最佳答案

您调用 replaceAll 的方式仍然会在原始字符串中留下许多空格或其他标点符号。我建议使用这个:

file = file.replaceAll("\\b" + Pattern.quote(word) + "(\\W+|$)", "") ;

其中 \W 表示任何非单词字符,\\b 表示单词边界。

PS:还添加了 Pattern.quote 来转义特殊的正则表达式符号(如果 word 中存在任何特殊正则表达式符号)。

关于java - 单个单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21326023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com