2011-10-25 51 views
0

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

+1

您可以尝试使用在两个文本之间创建差异的算法。 – svick

回答

0

大多数正则表达式库算法调整要快于对各种各样的正则表达式的人一般都是写的实践中,有时会忽略罕见的情况下,您可以构建的正则表达式的原因他们采取可怕的大量的时间。如果你的模式不是可怕的特殊情况之一,那么它的持续时间可能并不重要,因为在实践中,大多数不符合文本的地方可以通过检查文字和图案,而这些不匹配是时间的推移。

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