Java--正则表达式--应用实例&常用类
- 应用实例:
-
package com.model.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/8/19 20:39 * 正则表达式应用实例 */ public class RegExpDemo05 { public static void main(String[] args) { String context="18348950824"; // 匹配汉字 // String regExp="^[\u0391-\uffe5]$"; // // 邮政编码:以1-9开头的六位数字 // String regExp="^[1-9]\\d{5}$"; // 手机号:以18,15,13,14开头的11位数 // String regExp="^1[3|4|5|8]\\d{9}$"; // url:匹配url String regExp="^((http|https)://)([\\w-]+\\.)+([\\w-])+(\\/[\\w-?=&%.#]*)?$"; Pattern pattern = Pattern.compile(regExp); Matcher matcher = pattern.matcher(context); while (matcher.find()){ System.out.println(matcher.group(0)); } } }
-
- 常用类:
-
package com.model.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/8/19 23:22 * */ public class RegExpDemo06 { public static void main(String[] args) { // 1. 演示Pattern.matchers()方法的使用,整体匹配,查看是否匹配成功 // 只是返回是否匹配成功,不匹配截取返回子字符串 String context="hello world!"; String regExp="\\w"; // boolean matches = Pattern.matches(regExp, context); System.out.println(matches); // 2.演示Matcher方法的使用: String context1="hello world!"; String regExp1="\\w"; Pattern pattern = Pattern.compile(regExp1); Matcher matcher = pattern.matcher(context1); while (matcher.find()){ System.out.println(matcher.group(0)); System.out.println(matcher.end()); // 整体匹配,是否匹配成功 System.out.println(matcher.matches()); } // 3.replaceAll() 方法的使用,替换 // 如果 字符串中有 hello 就替换成 张紫韩 String context2="hello world!"; String regExp2="hello"; Pattern pattern2 = Pattern.compile(regExp2); Matcher matcher2 = pattern2.matcher(context2); String replaceAll = matcher2.replaceAll("张紫韩"); System.out.println(replaceAll); } }
-
反向引用
-
-
package com.model.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/8/22 8:44 * 反向引用: //1 //2 */ public class RegExpDemo07 { public static void main(String[] args) { String context="12345-111222333"; // String regExp="(\\d)(\\d)\\2\\1"; // 连续三位数相等,(\\d)\\2{2} (\\d)也算出现一个,\\2{2}:算是出现两次,一共三次 String regExp="(\\d){5}-(\\d)\\2{2}(\\d)\\3{2}(\\d)\\4{2}"; Pattern pattern = Pattern.compile(regExp); Matcher matcher = pattern.matcher(context); while (matcher.find()){ System.out.println(matcher.group(0)); } } }
-
去重:
-
package com.model.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/8/22 9:10 * 去重案例 */ public class RegExpDemo08 { public static void main(String[] args) { String context="我....我要学...学学学学...编程Java!"; // 1. 去掉所有的 . String regExp="\\."; Pattern pattern = Pattern.compile(regExp); Matcher matcher = pattern.matcher(context); while (matcher.find()){ context=matcher.replaceAll(""); } System.out.println(context); // 2. 去掉所有重复的字 // (1)使用(.)\\1+ // (2)使用反向引用$1来替换匹配到的内容 // 注意:因为正则表达式变化,所有需要充值matcher String regExp1="(.)\\1+"; // Pattern pattern1 = Pattern.compile(regExp1); // Matcher matcher1 = pattern1.matcher(context); // while (matcher1.find()){ // System.out.println(matcher1.group(0)); // } // //使用外部引用$1,来替换匹配到的内容 // context=matcher1.replaceAll("$1"); // System.out.println(context); // $1 相当于匹配到的字符中的第一分组的内容 context=Pattern.compile(regExp1).matcher(context).replaceAll("$1"); System.out.println(context); } }
-
正则表达式替换功能:
-
package com.model.regexp; import java.util.regex.Pattern; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/8/22 11:23 * 字符串常用的正则表达式功能 */ public class RegExpDemo09 { public static void main(String[] args) { // 1.替换功能,将jdk1.3和jdk1.4替换成jdk String context1="JDK1.3的and JDK1.4 我是张紫韩"; // context1=Pattern.compile("(JDK1.3|JDK1.4)").matcher(context1).replaceAll("JDK"); context1=context1.replaceAll("(JDK1.3|JDK1.4)","jdk"); System.out.println(context1); // 2.验证功能,验证是否是以183或是139开头的手机号 String context="18348950824"; System.out.println(context.matches("(183|139)\\d{8}")); // 3.分割功能,按照多个表示符进行分割 String context2="a123b#c~d^e&f*g(h)i-j+k"; String[] split = context2.split("\\d+|#|~|\\^|&|\\*|\\(|\\)|-|\\+"); for (String s:split){ System.out.println(s); } } }
-
package com.model.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/8/22 11:44 * 课堂联系 */ public class RegExpDemo10 { public static void main(String[] args) { // 1.有是否是邮箱 String context="171832195@qq.com"; System.out.println(context.matches("^[\\w]+@([a-zA-Z]+[\\.])[a-zA-Z]+$")); // 2.验证是否是正数和负数 String context1="-0.123"; System.out.println(context1.matches("^[-+]?([1-9]\\d*|0)([\\.][\\d]+)?$")); // 3.验证是否是URL // 分成四组:1协议 2域名 3端口号 4文件名 String context2="https://www.baidu.com:8080/acb/index.html"; String regExp="^(http|https)://([a-zA-Z\\.]+):(\\d+)[/\\w]*/([\\w.]+)$"; Matcher matcher = Pattern.compile(regExp).matcher(context2); while (matcher.find()){ System.out.println(matcher.group(0)); System.out.println(matcher.group(1)); System.out.println(matcher.group(2)); System.out.println(matcher.group(3)); System.out.println(matcher.group(4)); } System.out.println(context2.matches("^(http|https)://([a-zA-Z\\.]+):(\\d+)[/\\w]*/([\\w.]+)$")); } }
-
正则表达式大全;
-