正则表达式的常用字符

正则表达式的基本使用:

package patterntest;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/*
    看一下字符类:

    []表示一个字符:
        [abc]: abc其中的一个字符。
        [a-z]: a-z中的任意一个字符。
        [0-9]: 0-9中任意一个数字。
        [a-zA-Z]: a-z或者A-Z中任意一个字符。
        [^def]: 求补集,不是def中的一个字符。
        [a-c[e-g]]: 求并集,即a-c或者e-g中的一个字符。
        [a-z&&[def]]: 求交集,即def中的一个字符。

    ^表示开头,例如:"^abc.*",以“abc”开头的。
    $表示结尾,例如:".*xyz$",以“xyz”结尾的。

    单个字符的其他表示:
        .   任意一个字符。
        \d  数字:[0-9]
        \D  非数字:[^0-9]
        \s  空白字符:[ \t\n\x0B\f\r]
        \S  非空白字符:[^\s]
        \w  单词字符:[a-zA-Z_0-9]
        \W  非单词字符:[^\w]
        注意:“\小写字母”代表一类字符,“\大写字母”代表相反的字符。
            字符串中写“\\” 代表 “\”。一个反斜杆表示转义,两个反斜杆代表一个反斜杠。

    数量词:
        X?    X出现0次或1次,?表示是否有一个。
        X*    X出现0次或多次,*表示任意个。
        X+    X出现1次或多次,+表示至少有一个。
        X{n}    X恰好出现n次。
        X{n,m}    X出现n-m次,n和m都包括了。

    正则表达式的分组:
        捕获组通过数从左到右的开口括号计数编号。在表达((A)(B(C))),例如,有四个这样的团体:
        1     ((A)(B(C)))
        2     (A)
        3     (B(C))
        4     (C)
        零组总是代表整个表达式。

        例1:高高兴兴,快快乐乐,这样的叠词怎么匹配?
            (.)\1(.)\2    \1表示第一组再出现1次,\2表示第二组再出现1次。

            注意:(.)\1+,表示第一组至少出现1次。
                $1表示第一组出现的内容。

        例2:高兴高兴,快乐快乐,这样的叠词怎么匹配?
            (..)\1

        例3:将"我..我我....我...我..我我要.要...要..要要..学.学..学..学学.编.编..程..程."
            变成:"我要学编程"
            String s = "我..我我....我...我..我我要.要...要..要要..学.学..学..学学.编.编..程..程.";
            String s2 = s.replaceAll("\\.+", "");
            String s3 = s2.replaceAll("(.)\\1+", "$1");



 */

//练习题:

public class Test02 {
    public static void main(String[] args) {
        
        // 取出字符串中的三个手机号。
        String s = "我的第一个手机号是13511112222,第二个手机号是15722223333,第三个手机号是18733334444。";
        Pattern p = Pattern.compile("[1][358][0-9]{9}");  // 获取指定的正则表达式
        Matcher m = p.matcher(s);  // 获取匹配器
        boolean b = m.matches();  // 获取匹配的结果
        System.out.println(b);  // false   因为原文很长,怎么可能全是这几个数字

        while (m.find()) {
            int start = m.start();
            int end = m.end();
            String phone = m.group();
            System.out.println("开始下标:" + start + ",结束下标:" + end);
            System.out.println("手机号:" + phone);
            System.out.println();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/pipizhen_/article/details/107621637