Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 将长字符串(大部分类似)与长字符串匹配_Regex_Algorithm_String Matching - Fatal编程技术网

Regex 将长字符串(大部分类似)与长字符串匹配

Regex 将长字符串(大部分类似)与长字符串匹配,regex,algorithm,string-matching,Regex,Algorithm,String Matching,我正试图找到匹配和识别文件中不同许可证文本的最佳方法。这些是相当长的多行字符串(有时是2个字母大小的页面),如果匹配,它们除了几个变量(名称、日期、奇数新行、奇数空格)外应该基本相同。 我的问题是,在更长的字符串中匹配长字符串的最佳方法是什么?正则表达式的使用是否合理(一个巨大的regexp,包含整个许可证文本,变量元素只有几个通配符)?或者是否有特别适合的字符串搜索/匹配算法?阅读关于2个字符串的定义。基于的算法大多数正则表达式库在人们通常编写的各种正则表达式上都经过了快速调整,有时会忽略一些

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

阅读关于2个字符串的定义。基于

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


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

您可以尝试使用一种算法,在两个文本之间创建差异。