使用长字符串匹配长字符串(大多数类似)

时间:2011-10-25 00:25:08

标签: regex algorithm string-matching

我正在尝试找到匹配和识别文件中不同许可文本的最佳方法。这些是非常长的多行字符串(有时是2个字母大小的页面),如果匹配它们应该大致相同,除了一些变量(名称,日期,奇数新行,奇数空格)。 我的问题是,在更长的字符串中匹配长字符串的最佳方法是什么?使用正则表达式是否合理(一个巨大的正则表达式,其中包含整个许可证文本以及可变元素的几个通配符)?或者是否有特别适合的字符串搜索/匹配算法?

2 个答案:

答案 0 :(得分:1)

阅读2个字符串的Longest common subsequence条。基于Dynamic programming

的算法

答案 1 :(得分:0)

大多数正则表达式库都被调整为在人们通常编写的各种正则表达式上快速实践,有时忽略了可以构造正则表达式的罕见情况,这些正则表达式会导致它们花费大量时间。如果你的模式不是一个可怕的特殊情况,它可能无关紧要多长时间,因为在实践中,大多数与文本不匹配的地方都可以通过只检查几个字符来识别。文本和模式,这些不匹配是时间的流逝。

如果你想确保良好的性能,我会寻找一个必须存在于所有形式的许可证中的单个固定文本字符串(尽可能大),在文件中搜索它,然后重新检查以一些更复杂的方式出现这种情况很少,看看是否是真正的匹配。但实际上,如果你进行普通的正则表达式搜索,很可能会发生这种情况。为什么不让你的正则表达式松散在文件或它们的子集上,看看需要多长时间?