表示匹配连续的多个相同的任意字符,只要找到字符串里面存在连续的两个或者以上的相同字符即匹配。
括号中的点表示任意字符,后面的\\1表示取第一个括号匹配的内容,后面的加号表示匹配1次或1次以上,二者加在一起就是某个字符重复两次或两次以上。
/** * 1.将下面的国家重叠的字符替换成 竖线 | * ChinaqqqAmericahhhhhEnglandaaaaaaMexica */ @Test public void test1() { String str="ChinaqqqAmericahhhhhEnglandaaaaaaMexica"; //(.)\\1+:表示匹配连续的多个相同的任意字符,只要找到字符串里面存在连续的两个或者以上的相同字符即匹配。 System.out.println(str.replaceAll("(.)\\1+", "|"));//China|America|England|Mexica } /** * 2.将下面的国家重叠的字符替换成 一个, 也就是去掉重复的分隔符 * China|||||America::::::England&&&&&&&Mexica */ @Test public void test2() { String str="China|||||America::::::England&&&&&&&Mexica"; //(.)\\1+:表示匹配连续的多个相同的任意字符,只要找到字符串里面存在连续的两个或者以上的相同字符即匹配。 System.out.println(str.replaceAll("(.)\\1+","$1"));//China|America:England&Mexica }
@Test public void test3(){ String regex = "(.)\\1+"; Pattern pattern = Pattern.compile(regex); String address="京东号"; System.out.println(pattern.matcher(address).find());//false address="阿里巴巴号"; System.out.println(pattern.matcher(address).find());//true }