如何将java中的3个或以上连续字母去掉为2个连续字母?
How to remove 3 or more consecutive letters in java into 2 consecutive letters?
我正在尝试处理包含重复字符的字符串,以便在字典中找到正确的单词。
我必须使用的方法是找到具有 3 个或更多连续字母的单词并将它们删除为 2 个连续字母。
那我查字典有没有这个词。如果这个词不存在,那么我必须把连续的两个字母去掉,变成只有一个字母。
示例:
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*");
您可以使用这个正则表达式 ("pure version"):
(\b\w*?)(\w){2,}(\w*)
字符串版本:
"(\b\w*?)(\w)\2{2,}(\w*)"
你应该使用replaceAll(regex, "")
说明
(\b\w*?) // capture group 1 is lazy
(\w) // capture group 2 captures the first occurrence of the char
{2,} // char may occur 2 or more times...
(\w*) // capture group 3
注意替换中的$number
指的是对应捕获组的内容
你也可以这样做:
Pattern pattern = Pattern.compile("(\w)\1{2,}");
System.out.println(pattern.matcher("gooooooood").replaceAll(""));
System.out.println(pattern.matcher("awesooooome").replaceAll(""));
System.out.println(pattern.matcher("aaawwwesooooooommmme").replaceAll(""));
输出:
good
awesoome
aawwesoomme
对于第二步,您可以按照以下步骤操作:
Pattern pattern2 = Pattern.compile("(\w)\1");
System.out.println(pattern2.matcher("awesoome").replaceAll(""));
System.out.println(pattern2.matcher("aawwesoomme").replaceAll(""));
输出:
awesome
awesome
我正在尝试处理包含重复字符的字符串,以便在字典中找到正确的单词。
我必须使用的方法是找到具有 3 个或更多连续字母的单词并将它们删除为 2 个连续字母。
那我查字典有没有这个词。如果这个词不存在,那么我必须把连续的两个字母去掉,变成只有一个字母。
示例:
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*");
您可以使用这个正则表达式 ("pure version"):
(\b\w*?)(\w){2,}(\w*)
字符串版本:
"(\b\w*?)(\w)\2{2,}(\w*)"
你应该使用replaceAll(regex, "")
说明
(\b\w*?) // capture group 1 is lazy
(\w) // capture group 2 captures the first occurrence of the char
{2,} // char may occur 2 or more times...
(\w*) // capture group 3
注意替换中的$number
指的是对应捕获组的内容
你也可以这样做:
Pattern pattern = Pattern.compile("(\w)\1{2,}");
System.out.println(pattern.matcher("gooooooood").replaceAll(""));
System.out.println(pattern.matcher("awesooooome").replaceAll(""));
System.out.println(pattern.matcher("aaawwwesooooooommmme").replaceAll(""));
输出:
good
awesoome
aawwesoomme
对于第二步,您可以按照以下步骤操作:
Pattern pattern2 = Pattern.compile("(\w)\1");
System.out.println(pattern2.matcher("awesoome").replaceAll(""));
System.out.println(pattern2.matcher("aawwesoomme").replaceAll(""));
输出:
awesome
awesome