gpt4 book ai didi

java - 如何使用正则表达式删除文件中的重复单词(单词不连续)?

转载 作者:太空宇宙 更新时间:2023-11-04 10:26:16 28 4
gpt4 key购买 nike

我想使用正则表达式删除文件中所有重复的单词。

例如:

 The university of Hawaii university began using began radio. 

输出:

 The university of Hawaii began using radio. 

我写了这个正则表达式:

 String regex = "\\b(\\p{IsAlphabetic}+)(\\s+\\1\\b)+";

这仅删除连续出现的单词。

例如:夏威夷大学夏威夷大学开始使用 radio 。

输出:夏威夷大学开始使用 radio 。

我的正则表达式代码:

文件目录 = new File("C:/Users/Arnoldas/workspace/uplo/");

            String source = dir.getCanonicalPath() + File.separator + "Output.txt";
String dest = dir.getCanonicalPath() + File.separator + "Final.txt";

File fin = new File(source);
FileInputStream fis = new FileInputStream(fin);
BufferedReader in = new BufferedReader(new InputStreamReader(fis, "UTF-8"));

//FileWriter fstream = new FileWriter(dest, true);
OutputStreamWriter fstream = new OutputStreamWriter(new FileOutputStream(dest, true), "UTF-8");

BufferedWriter out = new BufferedWriter(fstream);

String regex = "\\b(\\p{IsAlphabetic}+)(\\s+\\1\\b)+";

//String regex = "(?i)\\b([a-z]+)\\b(?:\\s+\\1\\b)+";
Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

String aLine;
while ((aLine = in.readLine()) != null) {

Matcher m = p.matcher(aLine);
while (m.find()) {
aLine = aLine.replaceAll(m.group(), m.group(1));
}

//Process each line and add output to *.txt file
out.write(aLine);
out.newLine();
out.flush();
}

最佳答案

您可以使用 Streams 来代替:

String s = "The university university of Hawaii Hawaii began using radio.";
System.out.println(Arrays.asList(s.split(" ")).stream().distinct().collect(Collectors.joining(" ")));

在此示例中,字符串沿空格分割,然后转换为流。使用distinct() 删除重复项,最后将所有重复项用空格连接在一起。

但是这种方法有一个问题,就是末尾的点。 “广播”和“ radio ”。是不同的词。

关于java - 如何使用正则表达式删除文件中的重复单词(单词不连续)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50488740/

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