编写正则表达式来检测重复字符

sha*_*Hwk 13 java regex

我需要编写一个正则表达式,它将识别一个在结尾处具有重复字符集的单词.根据以下代码片段,重复字符集是.我需要写一个正则表达式,这样才会被发现并显示出来.An

根据以下代码,\\w将匹配任何单词字符(包括数字,字母或特殊字符).但我只想识别英文字符.

String stringToMatch = "IranAnAn";
Pattern p = Pattern.compile("(\\w)\\1+");
Matcher m = p.matcher(stringToMatch);
if (m.find())
{
    System.out.println("Word contains duplicate characters " + m.group(1));
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

Word contains duplicate characters a
Word contains duplicate characters a
Word contains duplicate characters An
Run Code Online (Sandbox Code Playgroud)

ass*_*ias 9

你想要在你的集合中捕获尽可能多的字符,所以(\\w)你应该使用(\\w+)并且你希望序列在最后,所以你需要添加$(我已经删除了+之后\\1没有用来检测重复:只需要重复一次):

Pattern p = Pattern.compile("(\\w+)\\1$");
Run Code Online (Sandbox Code Playgroud)

然后您的程序An按预期输出.

最后,如果您只想捕获ascii字符,则可以使用[a-zA-Z]而不是\\w:

Pattern p = Pattern.compile("([a-zA-Z]+)\\1$");
Run Code Online (Sandbox Code Playgroud)

如果您希望字符集至少为2个字符:

Pattern p = Pattern.compile("([a-zA-Z]{2,})\\1$");
Run Code Online (Sandbox Code Playgroud)

  • @sharonHwk也许改为`+`尝试使用`{2,}` (2认同)