正则表达式
- 是指一个用来描述或者匹配一系列复合某个语法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。
- 作用:比如注册邮箱,邮箱有用户名和密码,一般对其限制长度,这个限制长度的事情就是正则表达式做的。
public class Test04 { public static void main(String[] args) { // System.out.println(checkQQ("962702847")); // \d任意数字字符 正则表达式 String regex = "[1 - 9]\d{4,14}"; System.out.println("2553868".matches(regex)); /** * 1>校验qq号 * 2>要求必须是5到15位 * 3>0不能开头 * 4>必须都是数字 *a:明确返回值类型boolean *b:明确参数列表String qq */ } //常规方法 public static boolean checkQQ(String qq) { boolean flag = true;//如果校验qq不符合要求,就把flag设为false,如果符合要求就直接返回 if(qq.length() >= 5 && qq.length() <= 15) { if(!qq.startsWith("0")) { char[] arr = qq.toCharArray(); //将字符串转换成字符数组 for (int i = 0; i < arr.length; i++) { char ch = arr[i]; //记录每一个字符 if(!(ch >= '0' && ch <= '9')) { flag = false; //不是数字 break; } } }else { flag = false; //以0开头,不符合qq标准 } }else { flag = false; //长度不符合 } return flag; } }
正则表达式的分割功能
public class Test05 { public static void main(String[] args) { String s = "你好.世界.中国"; String[] arr = s.split("\."); //通过正则表达式分割字符串 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
把给定字符串中的数字排序:
- 将字符串切割成字符数组
- 将字符串转换成数字并将其存储在一个等长度的int数组中
- 排序
- 将排序后的结果遍历并拼接成一个字符串
public class Test07 { public static void main(String[] args) { String s = "91 27 46 38 50"; //将字符串切割成字符串数组 String[] sArr = s.split(" "); //将字符串转成数字并将其存储在一个等长度的int数组中 int[] arr = new int[sArr.length]; for (int i = 0; i < arr.length; i++) { //将数组字符串转换成数字 arr[i] = Integer.parseInt(sArr[i]); } //排序 Arrays.sort(arr); //将排序后的结果遍历凭接成一个字符串(以下两种方式) // String str = ""; // for (int i = 0; i < arr.length; i++) { // if(i == arr.length - 1) { // str = str + arr[i]; // }else { // str = str + arr[i] + " "; // } // } // System.out.println(str); StringBuilder sb = new StringBuilder(); for (int i = 0; i < arr.length; i++) { if(i == arr.length - 1) { sb.append(arr[i]); }else { sb.append(arr[i] + " "); } } System.out.println(sb); } }
正则表达式的替换功能:
public class Test08 { public static void main(String[] args) { String s = "wo33ai222hei"; String regex = "\d"; // \d代表的任意数字 String s2 = s.replaceAll(regex, ""); System.out.println(s2); } }
正则表达式的分组功能
public class Test09 { public static void main(String[] args) { //叠词 快快乐乐 高高兴兴 // String regex = "(.)\1(.)\2"; // \1代表第一组又出现一次 \2代表第二组又出现一次 // System.out.println("快快乐乐".matches(regex)); //叠词 快乐快乐 // String regex2 = "(..)\1"; // System.out.println("快乐快乐".matches(regex2)); //按照叠词切割:"sdqqfgkkhjppppkl"; // String s = "sdqqfgkkkhjppppkl"; // String regex = "(.)\1+"; //+代表第一组出现一次到多次 // String[] arr = s.split(regex); // for (int i = 0; i < arr.length; i++) { // System.out.println(arr[i]); // } //需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程 //将字符串还原成:“我要学编程”。 String s = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程"; String s2 = s.replaceAll("\.+","" ); String s3 = s2.replaceAll("(.)\1+", "$1");//$1代表第一组中的内容 System.out.println(s3); } }