正则表达式知识

正则表达式。
正则表达式用于操作字符串数据。
通过一些特定的符号来体现的。
要掌握正则表达式,必须学习一些符号。
例:"[1-9][0-9]{4,14}"表示第一个字符是1-9任意一个数字,4-14个字符是0-9的数字只能有5-15个字符。
虽然简化,但是阅读性差。
1,匹配:
    使用的就是String类中的matches方法。
2,切割:
    使用的就是String类中的split方法。
3,替换:
    使用的就是String类中的replaceAll();方法
4,获取:

基础用法:
    字符:
        x:表示准确字符x
        \\反斜杠字符 \转义字符
        \n换行符
        \r回车符
    字符类:
        [abc] a、b或c
        [^abc] 除了a、b和c
        [a-zA-Z]a到 z或 A 到Z的字母
        [0-9]0到9的字符
    预定义字符类:
        .任意字符 输入.用\.
        \d 数字[0-9]
        \w 单词字符[a-zA-Z0-9]
    边界匹配器:
        ^ 行的开头
        $ 行的结尾
        \b 单词边界
    Greedy 数量词
        X? X,一次或一次也没有
        X* X,零次或多次
        X+ X,一次或多次
        X{n} X,恰好 n 次
        X{n,} X,至少 n 次
        X{n,m} X,至少 n 次,但是不超过 m 次

代码举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
 
public class RegexDemo {
    public static void main(String[] args) {
        functionDemo_4();
    }
/*
 * 获取:
 *  将正则规则对象的封装。
 *  Pattern p=Pattern.complie("a*b");
 *  //通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配器对象Matcher.
 *  Matcher m=p.matcher("aaaab");
 *  //通过Matcher匹配器对象的方法对字符串进行操作。
 *  boolean b=m.matches();
 */
    public static void functionDemo_4() {
        String str="ni hao,jie xia lai gai zen me zuo ne memeda";
        String regex="\\b[a-z]{3}\\b";
         
        //1,将正则封装成对象
        Pattern p=Pattern.compile(regex);
        //2,通过正则对象获取匹配器对象
        Matcher m=p.matcher(str);
        //使用Matcher对象的方法对字符串进行操作。
        //获取三个字母组成的单词
        //查找:find();
        System.out.println(str);
        while(m.find()){
            System.out.println(m.group());//获取匹配的子序列
            System.out.println(m.start()+":"+m.end());
        }
    }
 
    public static void functionDemo_3() {
        String str="zhangsanttttlisinnnnxiaoqiang";
        str=str.replaceAll("(.)\\1+", "$1");//$1表示获取前面正则中的第一个组
        String tel="15811112222";
        tel=tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
        System.out.println(str);
        System.out.println(tel);
    }
 
    public static void functionDemo_2() {
        /*
         * 切割
         *
         * 组((A)(B(C)))
         * 1,((A)(B(C)))
         * 2,\A
         * 3,(B(C))
         * 4,(C)
         */
        String str="zhangsan  lisi xiaoqiang";
        //String[] names=str.split(" +");//如果名字之间是一个空格,正则就用" ";如果有多个空格,就用" +";
        //如果为.正则就用"\\.";
        String str1="zhangsanttttlisinnnnxiaoqiang";
        String[] names=str1.split("(.)\\1+");//表示从有重复元素的地方切割
        //正则中封装对象用()
        for(String name:names){
            System.out.println(name);
        }
    }
 
    public static void functionDemo_1() {
        //验证手机号是否符合格式
        String tel="15200001111";
        String regex="[1][358][0-9]{9}";//可以将[0-9]转成"\\d",表示数字
        boolean b=tel.matches(regex);
        System.out.println(tel+":"+b);
    }
 
}

 

posted @   飘逸110  阅读(264)  评论(1编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示