Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何删除重复字符,但保留其中两个?_Regex_Perl_String - Fatal编程技术网

Regex 如何删除重复字符,但保留其中两个?

Regex 如何删除重复字符,但保留其中两个?,regex,perl,string,Regex,Perl,String,如果超过2个字符 “你好 我的朋友!!!!!!!” 我需要减少到 “嗨 我的朋友!!” 请理解,在我的语言中有许多双字符的单词。 提前通知 kplla如果基于PHP和regex的解决方案很好,您可以执行以下操作: $str = "Hiiiiiii My frieeend!!!!!!!"; $str=preg#u replace('#(.)\1+#','$1',$str) echo$str;//嗨,我的朋友 您也可以使用上面在Perl中使用的regex: $str = "Hiiiiiii My

如果超过2个字符 “你好 我的朋友!!!!!!!”

我需要减少到 “嗨 我的朋友!!”

请理解,在我的语言中有许多双字符的单词。 提前通知


kplla

如果基于
PHP
regex
的解决方案很好,您可以执行以下操作:

$str = "Hiiiiiii My frieeend!!!!!!!";
$str=preg#u replace('#(.)\1+#','$1',$str)
echo$str;//嗨,我的朋友

您也可以使用上面在
Perl
中使用的
regex

$str = "Hiiiiiii My frieeend!!!!!!!"; $str =~s/(.)\1{2,}/$1$1/g;
$str=“你好,我的朋友!!!!!!!”; $str=~s/()\1{2,}/$1$1/g; Perl/regex(如果不是英语,Perl让我在Unicode方面比PHP更走运):


下面是另一个使用Java的lookahead(只是为了好玩)的正则表达式解决方案:

System.out.println(
    "Hiiiiii My Frieeeeend!!!!!!!".replaceAll("(.)(?=\\1\\1)", "")
); // prints "Hii My Frieend!!"

这取决于语言/平台。还是没关系?你会不会用正则表达式?如果不是,为什么不呢?请注意OP想要输出“Hii My frieend!!”——所以这还不太正确。我相信请求是留下双打,但不超过双打,对吗?是的,Devin。不超过两倍。我的语言是巴西语。(抱歉)我忘了告诉您,但我需要perl语言。(再次抱歉)这个想法是减少到不超过2。这样,我允许人们表达他们的“感受”,我不会破坏那些有双重魅力的词语。thnx@kplla当前位置虽然我很感激为减少此类写作所做的努力,但我必须告诉你,你将在这里与你的用户进行斗争。他们会找到一种方法来绕过你的过滤器(例如“Hii.ii.ii.ii.ii我的friee.eend!!”),他们会有很大的耐力来绕过这些过滤器。但是他们是孩子(现在),当他们看到一些阻碍他们想法的东西时,他们会停下来。将来我必须做得更好。。。谢谢。\1\1+相当于\1{2,}(第一次捕获的2个或更多)kixx:你说得对;那可能更干净。布莱恩:哇,我第一次把代码弄对了,你所要做的就是编辑我的大写字母!我感到骄傲
#!/usr/bin/perl

$str = "Hiiiiii My Frieeeeend!!!!!!!";

$str =~ s/(.)\1\1+/$1$1/g;

print $str;
System.out.println(
    "Hiiiiii My Frieeeeend!!!!!!!".replaceAll("(.)(?=\\1\\1)", "")
); // prints "Hii My Frieend!!"