我需要编写一个正则表达式,它将识别一个在结尾处具有重复字符集的单词.根据以下代码片段,重复字符集是.我需要写一个正则表达式,这样才会被发现并显示出来.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)
你想要在你的集合中捕获尽可能多的字符,所以(\\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)