Backgound(简化)
我有很多文件,由第三方自动生成(想想几个不同地址合并的输出),我试图以编程方式从中恢复原始模板和地址/自定义数据。< / p>
到目前为止我看过的内容
有很多库(jsdiff,difflib)来区分两个文件。我发现这样做有助于找出更改的%字 - 如果两个文件来自同一个模板,这是一个很好的指示
问题
所以,现在我处于将类似的文本文件组合在一起的阶段,现在我理想地找到一种方法来区分所有这些,将相同的文本与差异分开:
Hello [Mr, Mrs] [NameA, NameB, NameC...], we are pleased to (...)
那么,如何在Javascript / Python中找到3个或更多字符串的公共部分?
答案 0 :(得分:2)
我认为你需要一个后缀树(wikipedia)。 为每个文档构建后缀树。如果你不关心个别角色,可以随意使用单词而不是字符。
完成此操作后,您需要找到所有(或大多数)单个后缀树中找到的最长路径。因此,只需选择一个,获取所有节点的根并执行DFS,只有在所有(或足够多)树中找到它时,才能进入链接。这将遍历所有文档中常见的所有子字符串。
不确定是否有一个lib已经完成了所有这些,但是应该有一些东西可以帮助你构建后缀树。