黑马Java学习笔记之-----正则表达式
---------------------- android培训、java培训、期待与您交流! ----------------------
正则表达式:
符合一定规则的表达式。
作用:用于专门操作字符串。
特点:用一些特定的符号来表示一些代码操作,这样就简化了书写。
所以学习正则表达式,就是在学习一些特殊符号的使用。
好处:可以简化对字符串的操作。
弊端:符号定义越多,正则越多,阅读性越差。
Pattern类和Matcher类都在java.util.regex包中定义。
Pattern类:主要作用是进行正则规范的编写。
Matcher类:主要作用是执行规范,验证一个字符串是否符合其规范。
具体操作:
1. 匹配: String类的matches方法。用规则匹配整个字符串,只要有一次不符合规则, 就匹配结束,返回false。
2. 切割: String split()方法。
3. 替换: String replaceAll()方法。
4. 获取: 将字符串中符合规则的子串取出。
操作步骤:
1. 将正则表达式封装成对象。 Pattern p = Pattern.compile(regex);
2. 让正则对象和要操作的字符串相关联,获取匹配器对象 Matcher m = p.matcher(str);
3. 关联后,获取正则匹配引擎。
4. 通过引擎对符合规则的子串进行操作,比如取出。
(为了可以让规则的结果被重用,可以将规则封装成一个组。用()完成,组的出现都有编号,从1开始,想要使用已有的组可以通过\n(n就是组的编号)的形式来获取。)
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组(几个左括号就有几个组)。
1 //验证一个字符串是否是合法的日期格式 2 3 import java.util.regex.Pattern; 4 import java.util.regex.Matcher; 5 6 public class RegexTest 7 { 8 public static void main(String[] args) 9 { 10 regexDemo(); 11 } 12 13 public static void regexDemo() 14 { 15 String str ="1932-12-13"; 16 String regex = "\\d{4}-\\d{2}-\\d{2}"; 17 Pattern p = Pattern.compile(regex); //实例化Pattern类 18 Matcher m = p.matcher(str); //验证字符串内容是否合法 19 if (m.matches()) //使用正则验证 20 { 21 System.out.println("OKOK"); 22 } 23 else 24 { 25 System.out.println("nono"); 26 } 27 } 28 }
注:在程序中“\”字符是需要转义的,两个“\”实际上表示的是一个“\”,所以实际上“\\” 表示的是“\”。
1 //按照字符串的数字将字符串拆分 2 3 import java.util.regex.*; 4 5 public class RegexTest 6 { 7 public static void main(String[] args) 8 { 9 splitDemo(); 10 } 11 12 public static void splitDemo() 13 { 14 String str = "sdf6986asdf0hgrhe0709"; 15 String regex = "\\d+"; //定义验证规则 16 17 Pattern p = Pattern.compile(regex); //实例化Pattern类 18 String[] arr = p.split(str); //字符串拆分 19 //String[] arr = str.split(regex); //效果等同上两句,有什么区别? 20 for(String s: arr) 21 { 22 System.out.println(s); 23 } 24 } 25 }
1 //将全部的数字替换成“-” 2 3 import java.util.regex.*; 4 5 public class RegexTest 6 { 7 public static void main(String[] args) 8 { 9 replaceDemo(); 10 } 11 12 public static void replaceDemo() 13 { 14 String str = "asdf12321l453lij23h4ll"; 15 String regex = "\\d+"; //定义验证规则 16 Pattern p = Pattern.compile(regex); //实例化Pattern类 17 Matcher m = p.matcher(str); //实例化Matcher类 18 String ss = m.replaceAll("-"); //替换数字 19 System.out.println(ss); 20 } 21 }
---------------------- android培训、java培训、期待与您交流! ----------------------