java - 正则表达式替换重复字符

标签 java regex

谁能给我一个 Java 正则表达式来替换以下内容。

如果我有一个像“Cooooool”这样的词,我需要用 3 个 o 将其转换为“Cool”。这样我就可以用正常的“酷”字来区分它了。

另一个例子:“happyyyyyy”应该是“happyyy”

replaceAll("(.)\\1+","$1"))

我试过了,但它删除了所有重复的字符,只留下一个。

最佳答案

如下所示更改您的正则表达式。

string.replaceAll("((.)\\2{2})\\2+","$1");
  • ( 第一个筛选组的开始。
  • (.) 捕获任何字符。对于这种情况,您可以使用 [a-z]
  • \\2 指的是第二个捕获组。 \\2{2} 必须恰好重复两次。
  • ) 第一个捕获组结束。所以这将捕获前三个重复字符。
  • \\2+ 重复第二组一次或多次。

DEMO

关于java - 正则表达式替换重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32071060/

相关文章:

java - 位图压缩如何在 android 中工作?

java - 构造函数中的枚举和静态变量

Java:我有一组自定义类。如何删除、修改和重新插入 Set 中的一个元素?

javascript - 查找任何事物的多个实例所需的算法(或正则表达式)

java - 更改 docx、pdf 文档以便将其打印为书籍

java - Spring Web Socket Java 客户端

python - 如何编写正则表达式以从 CSS 文件中提取特定的键格式和值?

regex - 我想优化使用 IN 子句和 regex_str 函数的存储过程。我不确定我应该如何优化它?

javascript - 正则表达式匹配以 http 或斜杠开头的 url

javascript - 在 Javascript 中使用 Regex 返回单词数组