正则表达式
正则表达式
一、概述
1、概念:符合一定规则的表达式。
2、作用:用于专门操作字符串。
3、特点:用于一些特定的符号来表示一些代码操作,这样就可以简化代码书写。
4、好处:可简化对字符串的基本操作。
5、弊端:符号定义越多,正则越长,阅读性越差。
二、常用符号:
说明:X表示字符X或者匹配的规则。
一)字符
构造 匹配
\\ 反斜线字符
\t 制表符
\n 回车符
\f 换页符
二)字符类
[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](并集)
三)预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字: [0-9]
\D 非数字: |^[0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^ \t\n\x0B\f\r]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
四)边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
五)Greedy数词量---->匹配整个字符串
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好n次
X{n,} X,至少n次
X{n,m} X,至少n次,但不超过m次
六)组和捕获
捕获组可通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 ((A)(B(C)))
2 \A
3 (B(C))
4 (C) 组零始终代表整个表达式
在替换中常用$匹配组的内容,下面将会介绍到
三、正则表达式具体功能
主要有四种具体功能:匹配、切割、替换和获取
1、匹配:String matches方法。
用规则匹配整个字符串,只要有一处不符合,就匹配结束,返回false
[java]
//匹配
/*
* 1、对qq号进行校验
* 要求:5~15 0不能开头,只能是数字
*/
//非正则写法
public static void checkQQ1(String qqStr){
int len = qqStr.length();
if(len>=5 && len<=15){
if(qqStr.indexOf(0)!='0'){
Long l = Long.parseLong(qqStr);
System.out.println("qq为:" + l);
}
else
System.out.println("不可以0开头");
}
else
System.out.println(qqStr + "不合法");
}
//正则写法
public static void checkQQ(String qqStr){
//定义规则
String reg = "[1-9]\\d{4,14}";
if(qqStr.matches(reg))
System.out.println("qq:" + qqStr);
else
System.out.println(qqStr + "不是qq号");
}
//匹配电话号码
/*
* 1、手机号段只有 13xxx 15xxx 18xxxx
* 2、座机号:010-65784236,0316-3312617,022-12465647,03123312336
补充:软件开发 , Java ,