用例外替换重复字符

faq*_*faq 2 php regex replace

如何将其转换为正则表达式:替换重复多次的任何字符(又名".")并将其替换为其中一个字符,但"ii"和"iii"除外.

$reg = preg_replace('/(.)/1{1,}/','', $string);
Run Code Online (Sandbox Code Playgroud)

现在,这必须更换VVVVVV.....,不得更换Criiid(或Criid),但CriiiiiiidCrid.

如果您不理解这个问题,请随意发表评论.

Exp*_*lls 7

preg_replace('/([^i])\1+|(i){4,}/', '\1\2', $string)
Run Code Online (Sandbox Code Playgroud)

请注意,这会挤压所有内容 - 空格,换行符等.

  • 我相信PHP的PCRE你可以使用分支重置组`(?| ... | ...)`,这样它就变成`preg_replace('/(?|([^ i])\ 1+ |(i ){4,})/','\ 1',$ string)` (2认同)