Java正则表达式的使用

Matcher类的一些方法

find()方法:依次查找与Pattern匹配的子串,一旦找到子串,下次再调用时接着向下查找

group():返回上一次与Pattern匹配的字符串(一个字符串,可能会出现多个子串与Pattern匹配成功)

end():返回上一次匹配上的字符串结束的位置+1

start():返回上一次匹配上的字符串开始的位置

matcher():返回目标字符串与pattern是否匹配

reset():将现有的Matcher应用于一个新的字符串序列

import java.util.regex.*;

public class PatternTest1{
    public static void main(String[] args)
    {
        //System.out.println("dfsddfgdfdsfsd撒打发斯蒂芬");
        String s1 = "java is very easy";
        Pattern p = Pattern.compile("\w+");
        Matcher m = p.matcher(s1);
        while(m.find())
        {
            System.out.println(m.group()+"子串起始的位置:" + m.start()+"结束的位置:"+m.end());
        }
    }
}

运行结果:

java子串起始的位置:0结束的位置:4
is子串起始的位置:5结束的位置:7
very子串起始的位置:8结束的位置:12
easy子串起始的位置:13结束的位置:17
请按任意键继续. . .

源码--模拟判断几个邮件地址是否合法

 1 import java.util.regex.*;
 2 
 3 public class PtternTest2{
 4     public static void main(String[] args)
 5     {
 6         String[] mails = {
 7             "kongyeehu@163.com",
 8             "kongyeehua@gmail.com",
 9             "ligang@crazyit.org",
10             "wawa.abc.**"
11         };
12         String mailRegEx = "\w{3,20}@\w+\.(com|org|cn|net|gov)";
13         Pattern p = Pattern.compile(mailRegEx);
14         Matcher m = null;
15         for(String mail:mails)
16         {
17             if(m == null)
18             {
19                 m = p.matcher(mail);
20             }
21             else
22             {
23                 m.reset(mail);
24             }
25             String result = mail + (m.matches()?"是":"不是") + "有效的邮件地址";
26             System.out.println(result);
27         }
28         
29     }
30 }

Matcher类还提供了:replaceAll(“+++”)把匹配到的字符串都替换掉

           replaceFirst(“  ”)只替换第一个匹配到的

String 类也有类似的split() replaceAll() replaceFirst()

原文地址:https://www.cnblogs.com/xiaochenztx/p/8520499.html