在Java中查找最接近的字符串

问题描述 投票:0回答:1

我正在尝试从一个文本文件中找到另一个字符串。我有2个文本文件,file1.txtfile2.txt,其内容如下:

file1.txt

Hello
Second Line
Text line
Final Line

file2.txt

Final Linee
Text llline
line 3 of file2
Helloo

我的代码如下:

public class Regex {
public static void main (String[] args) throws IOException{
    BufferedReader inputFile= new BufferedReader(new FileReader("file1.txt"));

    String line;
    String pattern;

    while((line = inputFile.readLine()) != null){
        System.out.println(line);
        BufferedReader patternsFile = new BufferedReader(new FileReader("file2.txt"));
        while ((pattern = patternsFile.readLine()) != null){

            Pattern r = Pattern.compile(pattern);
            System.out.println(r);

            Matcher m = r.matcher(line);

            if (m.find()){
                System.out.println("Line corresponding to pattern in file1.txt : " + line);
            }
        }
    }
}

但是,上面的代码返回file1.txt中与file2.txt中的some模式匹配的所有行。但是,我想找到最接近的字符串,其编辑距离为n个字母。因此,例如,如果n = 1,则输出应为:

Hello
Final Line

如果n = 2,则应输出

Hello
Final Line
Text line

我刚开始使用Java,并且完全没有使用Java的经验。因此,我们将不胜感激。

谢谢

java regex distance difference
1个回答
0
投票

好的,我可以给两个提示。

  • 首先,如果您正在编写文本分析器或类似工具,或者需要一些强大的匹配功能,则可能需要查看Apache Lucene
  • [第二,如果您正在寻找更“最小”的东西,则可以实现Cosine Similarity算法,该算法非常有趣,应该对其进行认真研究。然后,您可以重新实现它并适应您的代码。您可以在Apache Common Text
  • 中找到一个实现
© www.soinside.com 2019 - 2024. All rights reserved.