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";