正则表达式分组及常见的方法

mac2025-11-02  29

正则表达式分组及常见的方法

/* * 正则表达式分组功能: * 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组: * split(regex) 参数是正则表达式 返回值是一个数组 * replaceAll(regex,replacement) 第一个参数是正则表达式, 第二个参数要替换成的字符串 */ import java.util.Arrays; public class RegexApply { public static void main(String[] args) { // TODO Auto-generated method stub // demo1(); // demo2(); // demo3(); // demo4(); // demo5(); // demo6(); } private static void demo6() { /* * \\. "" 将所有的. 替换为空字符串 * (.)\\1+ "$1" 将第一组出现的多次都替换 第一组出现的一次 $ 代表首字符 */ String s = "我..我我...我....爱..爱爱爱....爱爱..学.学学..学学学...学习习..习...习.习.习......习习习习"; String s2 = s.replaceAll("\\.+", ""); String s3 = s2.replaceAll("(.)\\1+", "$1"); System.out.println(s3); } private static void demo5() { /* * 叠词切割: "acyyfgttthjzzzzzko"; * (.)\\1+ //1+代表第一组出现一次到多次 */ String s = "acyyfgttthjzzzzzko"; String regex = "(.)\\1+"; //1+代表第一组出现一次到多次 String[] arr = s.split(regex); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } private static void demo4() { /* * 叠词 捕获组 (.)\\1(.)\\2 \\1代表第一组又出现一次 \\2代表第二组又出现一次 * (..)\\1 \\1代表第一组又出现了一次 */ //叠词 飘飘亮亮,美美丽丽 String regex2 = "(.)\\1(.)\\2"; //\\1代表第一组又出现一次 \\2代表第二组又出现一次 System.out.println("漂漂亮亮".matches(regex2)); //true System.out.println("美美丽丽".matches(regex2)); //false System.out.println("高高兴兴".matches(regex2)); //true System.out.println("死啦死啦".matches(regex2)); //false System.out.println("----------------------"); //叠词 漂亮漂亮,美丽美丽 String regex = "(..)\\1"; System.out.println("死啦死啦".matches(regex)); //true System.out.println("高兴高兴".matches(regex)); //true System.out.println("快快乐乐".matches(regex)); //false } private static void demo3() { /* * replaceAll(regex,replacement) 第一个参数是正则表达式, 第二个参数要替换成的字符串 */ String s = "aaoo1ddd3jgjao"; String regex = "\\d"; String s2 = s.replaceFirst(regex, ""); String s3 = s.replaceAll(regex, ""); System.out.println(s2); //aaooddd3jgjao System.out.println(s3); //aaoodddjgjao } private static void demo2() { /* * split(regex) 参数是正则表达式 返回值是一个数组 */ String s = "星期一.星期二.星期三.星期四"; String[] array = s.split("\\."); System.out.println(Arrays.toString(array)); } private static void demo1() { /* * 校验电话号码 * 1.必须是5-15位数字 * 2.开头不能位0 * 3.必须是纯数字 */ String regex = "[1-9]\\d{5,15}"; System.out.println("804360385".matches(regex)); //true System.out.println("430763075439703307503".matches(regex)); //false System.out.println("03534534".matches(regex)); //false } }
最新回复(0)