正则表达式

正则表达式

什么是正则表达式

​ 一套规则 - 匹配字符串的

能做什么

​ 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和回车

表示匹配一个TAB

表示匹配一个换行

W 非数字字母下划线

D 非数字

S 非空白

[d]d] [dD] [wW] [sS] 表示匹配所有

. 匹配除了换行符之外的所有

[^d] 匹配所有的非数字

^ 在[]外,表示匹配一个字符串的开始

$ 匹配一个字符串的结尾

a表达式|b表达式 匹配a或者b表达式中的内容,如果匹配a成功了,不会继续和b匹配. 所以,如果两个规则有重叠部分,总是把长的放在前面
() # 约束 | 描述的内容的范围问题

记忆元字符:

记忆元字符 : 都是表示能匹配哪些内容,一个元字符总是表示一个字符位置上的内容
d w s 	 
 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]  -在字符组中表示范围,如果不希望它表示范围,需要转义,或者放在字符组的最前面或最后面
原文地址:https://www.cnblogs.com/wyh0717/p/13038830.html