Perl 在字符串中搜索递归模式

Perl 在字符串中搜索递归模式,perl,Perl,使用Perl,我想搜索一串核苷酸(AGCT),寻找至少连续重复七次的不少于三个、不多于三个核苷酸的模式。我还需要保存打印到文件以及总计数的组合 这三种核苷酸的模式是未知的,因为虽然只有64种可能的组合,但我们不知道哪一种是重复组合 关于如何处理这件事,我脑子里有两条思路: 创建一个可能组合的列表,并在生成计数时对照该列表进行检查。这似乎不可行,因为每三个核苷酸就会产生一个匹配。而且它仍然不能解决连续匹配的问题 或者检查前三个核苷酸与后三个核苷酸,如果匹配,检查后三个。如果不匹配,请将读取帧移到字

使用Perl,我想搜索一串核苷酸(AGCT),寻找至少连续重复七次的不少于三个、不多于三个核苷酸的模式。我还需要保存打印到文件以及总计数的组合

这三种核苷酸的模式是未知的,因为虽然只有64种可能的组合,但我们不知道哪一种是重复组合

关于如何处理这件事,我脑子里有两条思路:

创建一个可能组合的列表,并在生成计数时对照该列表进行检查。这似乎不可行,因为每三个核苷酸就会产生一个匹配。而且它仍然不能解决连续匹配的问题


或者检查前三个核苷酸与后三个核苷酸,如果匹配,检查后三个。如果不匹配,请将读取帧移到字符串中的第二个核苷酸,然后再次尝试搜索。

此正则表达式应该可以实现以下功能:

/( ([ACGT]{3}) \2{6,} )/x
匹配ACGT的三个字符,然后再重复捕获
$2
至少六次。整个匹配的字符串在
$1
中,长度是实际组的三倍:
$n=length($1)/3

测试:

输出:

Matched ACG exactly 8 times

看起来不错。

确实不错。因此,我应该能够将一个变量(即用户输入文件)分配给“tacgacgacgacgt”部分。非常感谢。
Matched ACG exactly 8 times