Php正则表达式重复字符[取最大重复字符]

时间:2011-10-17 06:59:29

标签: php regex

我有一个这样的字符串:

"ABCCCCCCCCCCCCCDEF"

我使用代码

$value=preg_replace('/[C]{3,}/',"Z",$value);

返回此

"ABZZZZCDEF"

我如何得到以下结果?

"ABZCDEF"

3 个答案:

答案 0 :(得分:4)

<?php
$a = "ABCCCCCCCCCCCCCDEF";
echo preg_replace('/[C]+/', 'ZC', $a);
?>

给出

ABZCDEF

答案 1 :(得分:3)

我认为这就是你要找的东西:

$value = preg_replace('/([C]{3})+/', "Z", $value);

...或,“将一个或多个三个C组替换为Z。”您发布的代码不像您说的那样工作。我怀疑,正如蒂姆建议的那样,你真的这样做了:

$value = preg_replace('/[C]{3}/', "Z", $value);

请注意缺少逗号(,)。这会用C替换每组三个Z,其中我的版本用一个替换所有三个C的组 Z

编辑:......或者,正如马里奥所说,你真的在​​做一场非贪婪的比赛。在这种情况下,您的“正则表达式”字符串将为'/[C]{3,}?/''/[C]{3,}/U'

答案 2 :(得分:1)

您的preg_replace似乎默认为 ungreedy 。在这种情况下,您可以使用额外的{3,}更改+量词,这意味着最小为3个字符:

 = preg_replace('/[C]{3,}+/',
相关问题