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