黑马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开始,想要使用已有的组可以通过\nn就是组的编号)的形式来获取。)

捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((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培训期待与您交流! ----------------------

 

posted @ 2013-04-29 02:11  Mercy_K  阅读(169)  评论(0编辑  收藏  举报