我需要在相同的三行中排列多個相同的字母(只有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