Regex 唯一字符串内容的重复值
示例Regex 唯一字符串内容的重复值,regex,perl,Regex,Perl,示例 输入 $str=“aaaaa ttttttt gggggg ccccc aaaattt” 输出 ATGCAT 你可以试试这个 echo "AAAAATTTTTGGGGGGCCCCCAAAATTTT" | perl -pe 's/(.)\1+/\1/g' ()捕获单个字符 \1+将以下同一字符匹配一次或多次 或 use warnings; print "AAAAATTTTTGGGGGGCCCCCAAAATTTT" =~ s/(.)\1+/$1/gr; 您可以尝试此操作。替换为空字符串
输入 $str=“aaaaa ttttttt gggggg ccccc aaaattt” 输出 ATGCAT 你可以试试这个
echo "AAAAATTTTTGGGGGGCCCCCAAAATTTT" | perl -pe 's/(.)\1+/\1/g'
()
捕获单个字符
\1+
将以下同一字符匹配一次或多次
或
use warnings;
print "AAAAATTTTTGGGGGGCCCCCAAAATTTT" =~ s/(.)\1+/$1/gr;
您可以尝试此操作。替换为空字符串
。请参阅演示
试试这个
use warnings;
use strict;
my $s = "AAAAATTTTTGGGGGGCCCCCAAAATTTTAAAGGF";
my @va = $s =~m/(.)\1*/g;
print @va,"\n";
谢谢你@vks。无法将此正则表达式结果分配给变量。让我知道怎么做。@vks您的模式不是唯一的字符出现一次。例如,像这样的数据不会给出结果。因此,当其
ATGC
需要匹配时,请使用*
而不是+
:)@Hussain。请参见此处+1。但是非破坏性替换修改器
在5.14版本之前不工作。告诉错误类似于在regex.pl第2行,靠近“s/()\1+/$1/gr”的地方找到了运算符,不能修改regex.pl第2行,靠近“s/()\1+/$1/gr”的常量替换项(s///)
,但我从您的回答中学到了一些东西:@Hussain我不知道perl,但知道pcre。我没有发现你的正则表达式和我的正则表达式有什么不同。
use strict;
use warnings;
print"AAAAATTTTTGGGGGGCCCCCAAAATTTT"=~s/(A|T|G|C)\1*/$1/gr;
use warnings;
use strict;
my $s = "AAAAATTTTTGGGGGGCCCCCAAAATTTTAAAGGF";
my @va = $s =~m/(.)\1*/g;
print @va,"\n";