黑马程序员_正则表达式

来源:互联网 发布:网络架构工程师 编辑:程序博客网 时间:2024/06/06 17:55

——- android培训、java培训、期待与您交流! ———-

一.正则表达式
1.定义:以某种方式来描述字符串。
2.作用:用于专门操作字符串。
3.特点:用一些特定的符号来表示一些代码操作。
4.好处:可以简化对字符串的复杂操作。
5.弊端:符号定义越多,正则越长,阅读性越差。

二.正则表达式的常用构造摘要

1.字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)

2.预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]

3.边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾

4.Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次

三.正则表达式常见功能:
1.匹配:
(1)应用场景-判断字符串是否正确
(2)案例:对手机号进行校验,常用手机段有13xxx,15xxx,18xxx

public static void checkTel()    {        String tel="17708914543";        String regex="[1][358]\\d{9}";        System.out.println(tel.matches(regex));//false    }

2.切割:
(1)应用场景:按照自定的方式将字符串变成多个字符串
(2)案例:取出”zhangsan.lisi.wangwu”内的名字

public static void splitDemo(){    String str="zhangsan   lisi    wangwu";    String regex=" +";    String[] arr=str.split(regex);    for(String s : arr)    {        System.out.println(s);    }}

3.替换:
(1)应用场景:将已有的字符串变成另一个字符串
(2)案例:将给定字符串中连续出现的字母去掉,并保留一个连续出现的字母

public static void replaceAllDemo(){    String str="sdfkkwekkkfwqqsc";    String regex="(.)\\1+"str=str.replaceAll(regex,"$1");    System.out.println(str);}

4.获取:
(1)应用场景:获取符合需求的字符串子串
(2)操作步骤:
将正则封装成对象—>将正则对象和要操作的字符串相关联,创建匹配器—>通过匹配器对符合规则的子串进行操作
(3)案例:取出给定字符串中由3个字母组成的单词

public static void getDemo(){    String str="ming tian jiu yao fang jia le,da jia.";    String regex="\\b[a-z]{4}\\b";    //将正则表达式封装成对象    Pattern p=Pattern.compile(regex);    //将正则对象与操作的字符串相关联,并创建匹配器    Matcher m=p.matcher(str);    //尝试查找与该模式匹配的输入序列的下一个子序列    while(m.find())    {        //返回由以前匹配操作所匹配的输入子序列        System.out.println(m.group());    }}
0 0