用例外替换重复字符

时间:2014-03-18 12:49:19

标签: php regex replace

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

$reg = preg_replace('/(.)/1{1,}/','', $string);

现在必须将VVVVV替换为V....替换为.,且不得替换Criiid(或Criid),但{{{ 1}}与Criiiiiiid

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

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:3)

第一种替代方法取代了i之外的任何内容,第二种方案取代了出现四次或更多次的i

$reg = preg_replace('/([^i])\1{1,}|(i){4,}/','\1\2', $string);

或(感谢@Enissay):

$reg = preg_replace('/([^i])\1+|(i){4,}/','\1\2', $string);