表示匹配連續的多個相同的任意字符,只要找到字符串里面存在連續的兩個或者以上的相同字符即匹配。
括號中的點表示任意字符,后面的\\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 }