我试图找到匹配和识别文件内不同许可证文本的最佳方法。这些是非常长的多行字符串(有时是2个字母大小的页面),如果匹配,它们应该大部分是相同的,除了少数变量(名称,日期,奇数新行,奇数空格)。 我的问题是,在甚至更长的字符串中匹配长字符串的最佳方式是什么?是否正则表达式的使用是正确的(一个巨大的正则表达式,其中包含整个许可证文本和可变元素的几个通配符)?还是有一个字符串搜索/匹配算法,将特别适应?与长字符串匹配的长字符串(大部分类似)
0
A
回答
1
阅读关于Longest common subsequence的2个字符串。基于Dynamic programming
0
大多数正则表达式库算法调整要快于对各种各样的正则表达式的人一般都是写的实践中,有时会忽略罕见的情况下,您可以构建的正则表达式的原因他们采取可怕的大量的时间。如果你的模式不是可怕的特殊情况之一,那么它的持续时间可能并不重要,因为在实践中,大多数不符合文本的地方可以通过检查文字和图案,而这些不匹配是时间的推移。
如果您想确保良好的性能,我会寻找必须存在于所有许可证形式中的固定文本(尽可能大)的单个字符串,在文件中搜索此内容,然后重新检查以更复杂的方式查看是否真实匹配的少数情况。但是,如果你进行普通的正则表达式搜索,这很可能在实践中会发生什么。为什么不让你的正则表达式在文件或其子集上松动,并看看需要多长时间?
相关问题
- 1. 将较长的字符串与较短的字符串匹配
- 2. 与最大长度字符串类型
- 3. 两个大字符串中的部分字符串匹配
- 4. 字符串部分匹配
- 5. 加密字符串以匹配原始字符串的长度
- 6. perl:字符串匹配找到最长的子字符串
- 7. 匹配恒定长度的字符串?
- 8. 匹配长度与相同长度的字符串列表
- 9. 甲骨文:获取部分字符串匹配的长度
- 10. 字符串匹配时间戳长阶
- 11. 如何匹配长字符串?
- 12. 与Python部分字符串匹配
- 13. 与LINQ/C部分字符串匹配#
- 14. 如果字符串较长,Perl regexp部分匹配?
- 15. 将字符串的一部分与其他字符串的部分匹配
- 16. 字符串的长度比字符串的长度长
- 17. 长字符串
- 18. 与字符替换可变长度字符串匹配原始字符串长度
- 19. 提取长字符串的一部分。
- 20. 近似字符串匹配
- 21. 将可变长度字符串分配给固定长度字符串
- 22. 拆分长字符串WP7
- 23. 字符串自动填充静态字符匹配字符串长度
- 24. 字符串字符串Clob类型的字符太长
- 25. JAVA最长模式匹配字符串与换行符
- 26. 提取部分匹配两个子字符串的字符串
- 27. Python的 - 遍历字符串和组部分匹配字符串
- 28. 用粗体字符串替换部分匹配的字符串
- 29. 字符串拆分/字符串替换基于字符长度
- 30. MySQL选择匹配字符串的最大长度
您可以尝试使用在两个文本之间创建差异的算法。 – svick