我正在尝试处理具有重复字符的字符串,以便在字典中找到正确的单词。
我必须使用的方法是找到具有 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/