【发布时间】:2020-06-05 21:46:39
【问题描述】:
我正在尝试从一个文本文件中查找另一个文本文件中存在的字符串。我有 2 个文本文件,file1.txt 和 file2.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 开始的,完全没有这方面的经验。因此,我们将不胜感激。
谢谢
【问题讨论】:
-
@ArvindKumarAvinash 我认为这个问题可以使用 levenshtein 距离来解决,其中 levenshtein 是 n 如上所述。我并没有将自己限制在 RegEx,任何其他可能有用的算法都可以。正如下面提到的
Snix,我可以使用余弦距离不会那么容易使用。
标签: java