我需要编写一个正则表达式,它可以识别一个具有重复字符集 at the end。根据以下代码片段,重复字符集为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));
}
UPDATE
Word contains duplicate characters a
Word contains duplicate characters a
Word contains duplicate characters An
您希望捕获尽可能多的字符,所以而不是(\\w)
你应该使用(\\w+)
并且您希望序列位于末尾,因此您需要添加$
(并且我已经删除了+
after \\1
这对于检测重复没有用:只需要一次重复):
Pattern p = Pattern.compile("(\\w+)\\1$");
然后你的程序输出An
正如预期的那样。
最后,如果你只想捕获ascii字符,你可以使用[a-zA-Z]
代替\\w
:
Pattern p = Pattern.compile("([a-zA-Z]+)\\1$");
如果您希望字符集至少为 2 个字符:
Pattern p = Pattern.compile("([a-zA-Z]{2,})\\1$");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)