如何使用 Perl 进行不精确的字符串比较?

发布于 2024-12-20 14:09:52 字数 351 浏览 0 评论 0原文

给定两个字符串,我想找到指定长度的所有公共子字符串,但允许一个字符不同。

例如,如果 s1 是 'ATCAGC',s2 是 'ATAATCGAC',指定的长度是 3,那么我想要输出沿着这些思路:

ATC from s1 matches ATA, ATC from s2
TCA from s1 matches TAA, TCG from s2

问题

  • 我可以使用简单的正则表达式来做到这一点吗?
  • 如果没有,Perl 中有这个模块吗?

Given two strings, I want to find all common substrings of a specified length, but allowing one character to be different.

For example, if s1 is 'ATCAGC', s2 is 'ATAATCGAC', and the specified length is 3, then I'd want output along these lines:

ATC from s1 matches ATA, ATC from s2
TCA from s1 matches TAA, TCG from s2

Questions

  • Can I do so with a simple regex?
  • If not, is there module for this in Perl?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浪漫人生路 2024-12-27 14:09:52

首先,“perl 汉明距离”的 Google 结果发现了一个 perlmonks 线程,其中提到了 Text::LevenshteinXS,各种典型的实现,以及一个可爱的异或技巧:

sub hd{ length( $_[ 0 ] ) - ( ( $_[ 0 ] ^ $_[ 1 ] ) =~ tr[\0][\0] ) }

您应该浏览关于 字符串指标(如果编辑距离或汉明距离不熟悉)。

First, google result for "perl hamming distance" found a perlmonks thread that mentions Text::LevenshteinXS, various typical implementations, and a cute xor trick :

sub hd{ length( $_[ 0 ] ) - ( ( $_[ 0 ] ^ $_[ 1 ] ) =~ tr[\0][\0] ) }

You should skim wikipedia article on String metrics if Levenshtein distance or Hamming distance aren't familiar.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文