如何将其转换为正则表达式:替换重复多次的任何字符(又名“。”)并将其替换为其中一个字符,但“ii”和“iii”除外。
$reg = preg_replace('/(.)/1{1,}/','', $string);
现在必须将VVVVV
替换为V
或....
替换为.
,且不得替换Criiid
(或Criid
),但{{{ 1}}与Criiiiiiid
。
如果您不理解这个问题,请随意发表评论。
答案 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);