在线测试工具:?http://tool.chinaz.com/regex/
官方定义:
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
注:正则表达式和re没有什么关系,就是匹配字符串内容的一种规则。
应用场景:
场景一 :检测某一段字符串是否符合规则
场景二 :从某一段文字中找到符合规则的内容
规则:
字符组[]描述的是一个字符位置上的内容规则
1、不能从大到小来
2、规定范围不能从大到小来规定范围
[012345][0-5][0-9][9-0]不能从大到小来规定范围
数字:
[0-9]
字母:
小写 [a-z]、大写 [A-Z]、大小写 [A-Za-z]
eg:数字和大小写字母[A-Z0-9a-z]
大小写字母+下划线[A-Z0-9a-z_]
转义符:
在字符组当中 -是有特殊意义的,如果我们想取消这个横杠的特殊意义
需要使用作为转义符
在测试的网页上写的是什么
就直接复制过来
然后在字符串外面加上一个r
r‘n‘ --> r‘n‘
t ‘t‘
t 本身具有转义作用,相当于改变了t本来的面目
本身具有转义作用,相当于转义了的特殊作用,相当于普通的一个‘‘
()
元字符:
[0-9] d 匹配任意一个数字 digit
[A-Z0-9a-z_] w 标识符
n 匹配回车换行
t 匹配制表符 table
空格 本身匹配 空格
s 匹配所有的空白
b 匹配一个单词的边界
反义词
W 除了数字字母下划线之外的所有
D 除了数字之外的所有
S 除了空白之外的所有
. 匹配换行符之外的所有字符
匹配所有 :[Dd] [Ww] [Ss]
非字符组 :[^123]除了123之外的都匹配
开始符和结束符
^ 永远在一个规则的最开始
$ 永远在一个规则的最末尾
^和$ 规定了这个字符串的长度,并且在这个长度内的内容
| 或的概念
123|456
分组的概念
www.(baidu|oldboy).com
量词: 在量词的范围内尽可能多的匹配
{n} 表示出现n次
{n,} 表示至少出现n次
{n,m} 表示出现n-m次
? 表示匹配0次或1次
+ 表示匹配1次或多次
* 表示匹配0次或多次
元字符、 量词
匹配的是一个字符的内容
量词 表示的是匹配的次数
匹配整数
[1-9]d*|0
匹配小数
d+.d+
匹配一个整数或者小数
d+.d+|([1-9]d*|0) d+.?d* d+(.d+)?
贪婪匹配:
在量词范围内尽可能多的匹配 - 贪婪匹配
正则表达式 匹配身份证号码
解析:15位、首位不能为0、^[1-9]d{14}$
18位 首位不能为0,末尾可能是x和数字 ^[1-9]d{16}[dx]$
合起来
^([1-9]d{16}[dx]|[1-9]d{14})$
[1-9]d{14}(d{2}[dx])?
贪婪匹配 :默认的 尽可能多匹配
惰性匹配 :需要我们手动设置的 尽可能少匹配
a.* 以a开头的任意一个字符串都可以被匹配出来
a.*? 非贪婪
a.*?x 从a开始匹配,匹配任意长度的字符,遇到一个x就立即停止
总结:
d w s n t D W S b
[],[^]
^ $
| 或 永远把相对长的规则放在左侧
()
.


