[英]Regex to replace repeated characters
有人可以給我一個Java正則表達式來替換以下內容。
如果我有一個像“Cooooool”這樣的詞,我需要用3 o將其轉換為“Coool”。 所以我可以用正常的詞“酷”來區分它。
另一個例子:“happyyyyyy”應該是“happyyy”
replaceAll("(.)\\1+","$1"))
我嘗試了這個,但它刪除了所有重復的字符,只留下一個。
像下面這樣改變你的正則表達式。
string.replaceAll("((.)\\2{2})\\2+","$1");
(
第一個捕撈組的開始。 (.)
捕獲任何角色。 在這種情況下,您可以使用[az]
\\\\2
指第二個捕獲組。 \\\\2{2}
必須重復兩次。 )
第一次捕獲組結束。 所以這將捕獲前三個重復的字符。 \\\\2+
重復第二組一次或多次。 我想你可能會想要這樣的東西:
str.replaceAll("([a-zA-Z])\\1\\1+", "$1$1$1");
這將匹配一個字符重復3次或更多次的位置,並將用相同的字符替換它三次。
$1
只匹配一個字符,因為你圍繞着匹配的字符。
\\\\1\\\\1+
僅匹配該字符,如果它連續出現至少三次。
這個調用也比具有巨大的正則表達式並且僅使用一個$1
更具可讀性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.