正则表达式
正则表达式
什么是正则表达式
一套规则 - 匹配字符串的
能做什么
1.检测一个输入的字符串是否合法 -- web开发项目 表单验证
用户输入一个内容的时候,我们要提前做检测
能够提高程序的效率并且减轻服务器的压力
2.从一个大文件中找到所有符合规则的内容 -- 日志分析\爬虫
能够高效的从一大段文字中快速找到符合规则的内容
字符组
描述的是一个位置上能出现的所有可能性
接受范围,可以描述多个范围,连着写就可以了
[abc] 一个中括号只表示一个字符位置
匹配a或者b或者c
[0-9] 0到9中任意一个数字
[a-z] a到z中任意一个字母
[A-Z] A到Z中任意一个字母
[a-zA-Z] 表示任意一个大小写字母
[0-9a-z] 表示任意一个0-9的数字或任意一个小写字母
在正则表达式中能够帮助我们表示匹配的内容的符号都是正则中的 元字符
元字符 -- 匹配内容的规则
[]元字符
[^] 非的任意一个
\d 表示匹配一位任意数字 digit
\w 表示匹配一位任意数字字母下划线 word
\s 表示所有空白,包括空格tab和回车
\t 表示匹配一个TAB
\n 表示匹配一个换行
\W 非数字字母下划线
\D 非数字
\S 非空白
[\d]\d] [\d\D] [\w\W] [\s\S] 表示匹配所有
. 匹配除了换行符之外的所有
[^\d] 匹配所有的非数字
^ 在[]外,表示匹配一个字符串的开始
$ 匹配一个字符串的结尾
a表达式|b表达式 匹配a或者b表达式中的内容,如果匹配a成功了,不会继续和b匹配. 所以,如果两个规则有重叠部分,总是把长的放在前面
() # 约束 | 描述的内容的范围问题
记忆元字符:
记忆元字符 : 都是表示能匹配哪些内容,一个元字符总是表示一个字符位置上的内容
\d \w \s \t \n \D \W \S
[] [^] .
^ $
| ()
记忆量词:
{n} 表示匹配n次
{n,} 表示匹配至少n次
{n,m}表示至少匹配n次,至多m次
? 表示匹配0次或1次 {0,1}
+ 表示1次或多次 {1,}
* 表示0次或多次 {0,}
(数轴:? 0到1;+ 1到无穷;* 0到无穷)
整数 \d+
小数 \d+\.\d+
整数或小数 : \d+\.?\d*
分组的作用 : \d+(\.\d+)?
贪婪匹配
在量词范围允许的情况下,尽量多的匹配内容
.*x 表示匹配任意字符 任意多次数 遇到最后一个x才停下来
非贪婪(惰性)匹配
.*?x 表示匹配任意字符 任意多次数 但是一旦遇到x就停下来
转义符
原本有特殊意义的字符,到了表达它本身的意义的时候,需要转义
有一些有特殊意义的内容,放在字符组中,会取消它的特殊意义
. 有特殊的意义,取消特殊的意义\.
取消一个元字符的特殊意义有两种方法
1.在这个元字符前面加\
2.对一部分字符生效,把这个元字符放在字符组里
[().*+?] 所有的内容在字符组中会取消它的特殊意义
[a\-c] -在字符组中表示范围,如果不希望它表示范围,需要转义,或者放在字符组的最前面或最后面