黑马程序员技术交流社区

标题: 【广州校区】【原创】正则表达式使用方法 [打印本页]

作者: 码农苏尼玛    时间: 2018-12-17 16:42
标题: 【广州校区】【原创】正则表达式使用方法
今天给大家介绍下javase常用的判断以及校验方法-正则表达
正则表达式作用是对字符串进行规则性的操作.
好处:正则表达对字符串复杂操作变为简单
特点:将字符串操作例如剪切筛选,可用符号来标识.只需使用指定符号,就可以在封装的底层代码对字符串进行操作.简化代码书写和增强字符串可操作性
坏处:符号出现简化了书写,但是影响开发者的易读性.但是基于正则表达式的用法,上手其实很简单
常用方法:
第一种: 匹配
matches() 用表达式匹配整个字符串,只要出现一次不符合规则,直接返回false

public static void checkQQ(){
        String qq = "qqeeq1233";

        String reg = "[1-9]\\d{4,14}";

        boolean flag = qq.matches(reg);
        if(flag)
            System.out.println(qq+"...istrue");
        else
            System.out.println(qq+"... 不合法");

}             //不合法

第二种: 切割
split()方法 根据正则表达式匹配拆分字符串并且返回数组
public static void splitTest()
        {

        String str = "avg   sum";
        String reg = " +";//按照多个空格来进行切割
        String[] arr = str.split(reg);  
        System.out.println(arr.length);
        for(String s : arr)
        {
            System.out.println(s);
        }
    }

第三种: 替换
replaceAll(reg,str) 使用replacement 替换字符串所有匹配的正则表达式子字符串
public static void replaceDemo()
    {

        String str = "eqeqeeeeqeqeqewe75f";//将字符串中的数字替换成#。

        str = str.replaceAll("\\d{5,}","#");

        System.out.println(str);
    }
第四种: 获取

将字符串中符合正则表达式规则的子字符串取出
1.将正则表达式封装为对象
2.让正则表达式对象和字符串关联
3.关联获取正则表达式匹配器
4.通过匹配对符合正则表达式的子字符串操作
public static void getDemo()
    {
        String str = "wo shi he ge de admin";
        System.out.println(str);
        String reg = "\\b[a-z]{3}\\b";//匹配只有三个字母的单词

        //将规则封装成对象。
        Pattern p = Pattern.compile(reg);

        //让正则对象和要作用的字符串相关联。获取匹配器对象。
        Matcher m  = p.matcher(str);

        //System.out.println(m.matches());//其实String类中的matches方法。用的就是Pattern和Matcher对象来完成的。
        //只不过被String的方法封装后,用起来较为简单。但是功能却单一。

       // boolean b = m.find();//将规则作用到字符串上,并进行符合规则的子串查找。
       // System.out.println(b);
       // System.out.println(m.group());//用于获取匹配后结果。


        while(m.find())
        {
            System.out.println(m.group());
            System.out.println(m.start()+"...."+m.end());
                // start()  字符的开始下标(包含)
                //end()  字符的结束下标(不包含)
        }
    }

最后给大家总结下 正则表达式常用公式

正则表达式通用匹配符

正则表达式
说明
示例
.
匹配任何单个符号,包括所有字符
match="."      result: x a + x b + x c * (x d - x e ) - x f / x g
^xxx
在开头匹配正则xxx

match="^x"   result:xa

xxx$
在结尾匹配正则xxx
match=".g$"  result:xg
[abc]
能够匹配字母a,b或c
match="[xa]"  result:x a x x x x x x
[abc][12]
能够匹配由1或2跟着的a,b或c
[^abc]

当^是[]中的第一个字符时代表取反,匹配除了a,b或c之外的任意字符。

(“[^ab][^12].”, “c3#”) – true(“[^ab]..[^12]“, “xcd3″) – true
[a-e1-8]
匹配a到e或者1到8之间的字符
(“[a-e1-3].”, “d#”) – true(“[a-e1-3]“, “2″) – true
xx|yy
匹配正则xx或者yy
(“x.|y”, “xa”) – true(“x.|y”, “y”) – true

java正则表达式元字符

正则表达式
说明
\d
任意数字,等同于[0-9]
\D
任意非数字,等同于[^0-9]
\s
任意空白字符,等同于[\t\n\x0B\f\r]
\S
任意非空白字符,等同于[^\s]
\w
任意英文字符,等同于[a-zA-Z0-9]
\W
任意非英文字符,等同于[^\w]
\b
单词边界,也就是指单词和空格间的位置
\B
非单词边界

正则表达式量词

正则表达式
说明
x?
x没有出现或者只出现一次
x*
x出现0次或更多
X+
X出现1次或更多
X{n}
X正好出现n次
X{n,}
X出现n次或更多
X{n.m}
X出现至少n次但不多余m次








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2