File 基于内容的字符串匹配

File 基于内容的字符串匹配,file,compare,string-matching,File,Compare,String Matching,我试着比较两个文本文件,想知道它们有多相等。必须考虑单词的顺序 例如: 正文1: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. 文本2: Lorem ipsum sit amet, consictetuer adipiscing elit. Aenean dolor commodo ligvla eget dolor.

我试着比较两个文本文件,想知道它们有多相等。必须考虑单词的顺序

例如:

正文1:

Lorem ipsum dolor sit amet, consectetuer 
adipiscing elit. Aenean commodo 
ligula eget dolor. Aenean massa. 
文本2:

Lorem ipsum sit amet, consictetuer 
adipiscing elit. Aenean dolor commodo 
ligvla eget dolor. massa. 
我找到了很多解决方案来逐行比较两个文本文件,但如果有任何不同,它们在一行中给出了一个不匹配的结果。就像在这个例子中,所有的行都是不同的,我没有得到任何匹配

我需要一些算法来逐字比较文件。应该看到,一行中的单词是相等的,并且以相同的顺序出现,但有时可能是缺少一个单词,添加了一些字符或几个字符不匹配

因此,如果缺少一个单词,算法不应该创建后续错误(如示例中所示:在文本中,_2缺少“dolor”,因此如果我在一个数组中逐字比较文本,我会得到几乎其余文本的后续错误)

我预期的解决方案应该给我:

  • 单词列表出现在同一上下文中的两个文本中。[Lorem ipsum sit amet,Adipis Elite.Aenean commodo eget dolor.massa.]
  • 第二篇课文中遗漏的单词列表。[康塞特图尔、利古拉、埃尼安]
  • 在第二个文本中添加的单词列表。[ConsisteTuer,ligvla]
  • 两个文本中但位置不同的单词列表[dolor]
  • (可选)识别仅在几个字符上不同的单词[ligula,ligvla]
目标是计算匹配的量化等级,如80%匹配。我还不知道如何详细计算。但主要的问题是,如果遗漏或添加了一些单词,就要获得一行中单词的匹配[就像两个文本中第一行中“sit”“amet”的匹配。]

我开始用java编程,但由于更好地处理正则表达式,我转而使用Perl

谢谢你的帮助

还可以尝试使用
-s
选项


您可以尝试调整算法的某些部分,以使用单词作为标记而不是行,但这项任务几乎没有强大的通用解决方案-这就是为什么我们经常看到手动合并

例如,
一二三三二一
~
一二
-编辑后,您如何判断“二”的哪个实例剩余?或者,删除后只剩下最后一个“一”,然后在末尾加上“两”?差别越大,问题就越大。但是,您特定的数据限制和需求可以使这一点非常可行。