1.什么是正则表达式
正则表达式是一套匹配字符窜的表达式
2.正则表达式的作用
2.1.检查有关输入的字符窜是否合法 用户输入一个内容的时,
我们要提前做检测 能提供程序的效率并且减轻服务
2.2.从一个大文件中找到所有符号规范的内容
能够高效的从一大段文字中快速找到符合规则的内容
在介绍正则表达式的匹配规则之前我会先给大家一个网站
大家可以在这个网站上去查看表达式是否匹配 http://tool.chinaz.com/regex/
3.正则表达式的规则
3.1
字符照顾[] (可能在下面出现的一个字符组的可能)
一个字符组只表示一个字符上的内容
[adc] 一个括号只表示一个字符的位置
匹配到a或b或c
[0-9]根据ascii码的进行范围对比
匹配到1或2或3或4,一直到9的个位数
[a-z]匹配到a或b或c或d一直到z的所有小写字母
[A-Z]和上面一样
[a-zA-Z]所有大小写数字
[0-9a-z]所有个位数和小写字母
[0-9a-zA-Z]所有个位数和小写字母和大写字母
匹配多位数
[0-9][0-9]就可以匹配到多个数了
3.2匹配规则的简化
\d --> 匹配任意一位的数字---->[0-9]
\w --> 匹配任一的个位数和小写字母和大写字母------>[0-9a-zA-Z]
匹配(空格/tab/enter)用--->(空格|\t|\n)
也可以所有\s来匹配所有的空白
3.3元字符
元字符
[] 表示写在[]里面的都可以匹配
\d 匹配任意一位的数字
\w 匹配任一数字,字母,下划线
\W 匹配所有非(数字,字母,下划线)。
\D 匹配所有非数字的
\S 非空白符
\b -->匹配一个单词的结尾(如 x\b 就会匹配到字符结尾的x)
[\d\D] ,[\w\W],[\S\s] 表示匹配所有
. -->表示匹配除换行符意外的所有
[^]-->匹配非字符组合
[^\d]-->匹配所有非数字
^ -->匹配一个字符组的开始 (永远只出现在字符串的开始)
$-->匹配一个字符串的结尾 (永远只出现在字符串的结束)
a表达式|b表达式 --> 匹配a或者b的内容 ,如果匹配a成功则b不会成功,
所以在匹配时优先将长的表达式放在前面
\ 表示取消特殊的原因 如\.表示匹配 . 了
() 可以约束字符的范围
3.4量词
量词只约束前面的一个元字符
'''
{n} 表示匹配n次
{n,} 表示匹配至少n次
{n,m} 表示至少匹配n次,至多匹配m次
? 表示匹配0次或1次
+ 表示匹配1次或多次
* 表示匹配0次或多次
如何理解量词
0-1--------------->无穷大
(数轴)
可以将0-1想成 ?
可以将1-(无穷大)想成 +
可以将0-(无穷大)想成 *
4.贪婪匹配和非贪婪匹配
4.1贪婪匹配
在量词范围运行的情况下尽量多次的匹配内容
\d{3,9} 会匹配9次
在贪婪匹配之后会使用回溯算法
回溯算法
在从左到右算完了后,在从右到左来寻找让他停止的值
如在输入\d{3,}6 后发现不管你输入多少个6后都值会在最后一个6上
停止
常用方法: .*?x 表示匹配任意字符,任意多次,遇到'最后一个'x就停止
4.2非贪婪匹配
在量词运行的情况下尽量少的匹配
方法在量词后面加 ?
如 \d{3,}?6 后就只会到将第一个6前面的数算入匹配内容了
常用方法: .*?x 表示匹配任意字符,任意多次,遇到x就停止
5.转义符
在原本有特殊意义的字符,到了表达它本身的意义的时候,就需要转义了
将需要转义的字符放在[]里面就可以了
或者在字符前面加上 \
如:\.就会匹配.了