我需要在相同的三行中排列多个相同的字母(只有A-Z或a-z,而不是数字)。任何人都可以帮我一个模式字符串?替换多个相同的字母
实施例:
输入:NO MEK PUCES CUDAK AVVVVVVVVVVVVVVVVVVVVVVVVV VASMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
输出:NO MEK PUCES CUDAK AVVV VASMAAA
我需要在相同的三行中排列多个相同的字母(只有A-Z或a-z,而不是数字)。任何人都可以帮我一个模式字符串?替换多个相同的字母
实施例:
输入:NO MEK PUCES CUDAK AVVVVVVVVVVVVVVVVVVVVVVVVV VASMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
输出:NO MEK PUCES CUDAK AVVV VASMAAA
使用组(([A-Za-z])
)和反向引用(\1
)。
$text = "NO MEK PUCES CUDAK AVVVVVVVVVVVVVVVVVVVVVVVVV VASMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
echo preg_replace('/([A-Za-z])\1{3,}/', "$1$1$1", $text);
# => NO MEK PUCES CUDAK AVVV VASMAAA
谢谢你,你是老板。 – Legionar
可以使用正则表达式与反向引用:
preg_replace('/(.)\1+/', '$1', $str);
(.)
匹配任何字符并将其放入捕获组中。 \1
是对同一组的引用,并且+
限定了它可能出现一次或多次的前一个标记。因此,这会将至少两个相同字符的任何运行替换为一个。
如果你想要一个以上的字符保留,比如你的例子表明,你可以使用以下命令:
preg_replace('/(.)\1{2,}/', '$1$1$1', $str);
如果需要限制的字符集,那么就由字符类换出.
,例如[a-zA-Z]
。
您需要替换除3个字母以外的所有字母吗? – AmazingDreams
[Regex删除重复的字母]的可能的重复(http://stackoverflow.com/questions/17885329/regex-to-remove-duplicate-letters) – NDM