程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了正则表达式查找两个字符串的最长公共前缀大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决正则表达式查找两个字符串的最长公共前缀?

开发过程中遇到正则表达式查找两个字符串的最长公共前缀的问题如何解决?下面主要结合日常开发的经验,给出你关于正则表达式查找两个字符串的最长公共前缀的解决方法建议,希望对你解决正则表达式查找两个字符串的最长公共前缀有所启发或帮助;

如果有些字符两个字符串都不包含,例如,\0可以这样写

"$first\0$second" =~ m/^(.*).*\0\1/s;

并且最长的公共前缀将另存为$1

这显然是非常低效的。我认为,如果要关注效率,那么这根本不是我们应该使用的方法。但我们至少可以通过改变改进.*,以[^\0]*防止无用的贪念,将只需要再次回溯,和包装第二[^\0]*(?>…)防止回溯那也没有办法。这个:

"$first\0$second" =~ m/^([^\0]*)(?>[^\0]*)\0\1/s;

这将产生相同的结果,但效率更高。(但仍然不是近 作为 有效作为一个简单的非正则表达式为基础的方法。如果字符串都有长度 ñ ,我预计其最坏的情况下至少需要O( ñ 2)时间,而直接的非regex-基础的方法将采取O( ñ 的)时间 最坏的情况。)

解决方法

是否有一个regexp可以找到两个字符串的最长公共前缀?而且如果一个正则表达式无法解决这个问题,那么使用正则表达式(perl,ruby,python等)中最精美的代码或oneliner就是什么。

PS:我可以通过编程轻松地做到这一点,我只是想好奇,因为在我看来这可以通过正则表达式解决。

PPS:使用正则表达式的O(n)解决方案可获得额外奖励。来吧,它应该存在!

大佬总结

以上是大佬教程为你收集整理的正则表达式查找两个字符串的最长公共前缀全部内容,希望文章能够帮你解决正则表达式查找两个字符串的最长公共前缀所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。