java - java中如何将3个或更多连续字母去除为2个连续字母?

标签 java regex replace repeat letters

我正在尝试处理具有重复字符的字符串,以便在字典中找到正确的单词。

我必须使用的方法是找到具有 3 个或更多连续字母的单词,并将它们删除为 2 个连续字母。

然后我会在字典中查找这个词是否存在。如果该单词不存在,那么我必须将两个连续的字母删除为仅 1 个字母。

示例:

gooooooood -> good (this existis)
awesooooome -> awesoome (this doesn't exist) -> awesome (this exists)
aaawwwesooooooommmme -> aawwesoomme (this doesn't exist) -> awesome (this exists)

我正在使用 JAVA,并且我已经使用此正则表达式来获取字符串中具有 3 个或更多重复字母的单词:

Pattern p = Pattern.compile("\\b\\w*(\\w)\\1{2}\\w*");

最佳答案

您可以使用此正则表达式(“纯版本”):

(\b\w*?)(\w)\2{2,}(\w*)

字符串版本:

"(\\b\\w*?)(\\w)\\2{2,}(\\w*)"

您应该使用replaceAll(regex, "$1$2$2$3")

说明

(\b\w*?) // capture group 1 is lazy
(\w)     // capture group 2 captures the first occurrence of the char
\2{2,}   // char may occur 2 or more times...
(\w*)    // capture group 3

请注意,替换中的$number指的是相应捕获组的内容。

关于java - java中如何将3个或更多连续字母去除为2个连续字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37089227/

相关文章:

java - 如何使 Camel 在拆分器组件后不回滚更改

java - 字符串数组在项目文本后放置一个逗号

java - 使用正则表达式进行条件替换

c# - 在 B4A 中获取两个字符串之间的精确字符串

java - 如何使用Java打砖 block 游戏的重置按钮

python - 基于内部结构(如果存在)的 Python 正则表达式

python - 在 Python 字典中查找和替换值

regex - 在Visual Studio中使用正则表达式(regex)查找和替换?

python - 将单引号替换为双引号并排除某些元素

java - Hibernate NoSuchMethodError in Byte buddy 构建 session 工厂时