day29--正则表达式

是什么:

  通过一个规则来从一段字符串中找到符合规则的内容,或者判断某段字符串是否符合规则

有什么用:

  注册页/网页上,要求输入一个信息,判断输入的信息格式是否正确

  爬去信息,从网页上把代码,以字符串的形式下载回到内存,提取这个大字符串中想要的内容

怎么用:

  1,字符组:约束字符中某一个字符位置上的值是什么,只要是出现在字符组中的内容,都算匹配到了

  2,从小到大的顺序是根据ASCII码的顺序来的

正则 待匹配字符 匹配结果 说明
[0123456789] 8 True 在一个字符组里枚举合法的所有字符,字符组里的任意一个字符和"待匹配字符"相同都是为可以匹配
[0123456789] a False 由于字符组中没有'a'字符,所以不能匹配
[0-9] 7 True 也可以用-表示范围,[0-9]就和[0123456789]是一个意思
[a-z] s True 同样的如果要匹配所有的小写字母,直接用[a-z]就可以表示
[A-Z] B True [A-Z]就表示所有的大写字母
[0-9a-fA-F] e True 可以匹配数字,大小写形式的a~f,用来验证十六进制字符

  字符:  ^永远放在规则的开始,$永远放在规则的结尾

元字符 匹配内容
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白符
a|b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符

量词:

量词 用法说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

贪婪匹配:正则表达式本身就是贪婪匹配的,在满足匹配时,匹配尽可能长的字符串

惰性匹配: 量少匹配,需要在量词后面加上一个❓

  最常见的用法 :  .*?标识,标识匹配任意长度的字符遇到标识就立刻停止

看正则表达式的话,怎么区分:

  找元字符,元字符后面如果出现量词,那么这个量词就是约束这个元字符出现的次数

  如果元字符后面如果不出现量词,表示这个元字符匹配一次

  如果在量词后面还有❓ 表示惰性匹配

转义符 : \

  在正则表达式中,有很多有特殊意义的是元字符,比如\d和\s等,如果要在正则中匹配正常的"\d"而不是"数字"就需要对"\"进行转义,变成'\\'。

在python中,无论是正则表达式,还是待匹配的内容,都是以字符串的形式出现的,在字符串中\也有特殊的含义,本身还需要转义。所以如果匹配一次"\d",字符串中要写成'\\d',那么正则里就要写成"\\\\d",这样就太麻烦了。这个时候我们就用到了r'\d'这个概念,此时的正则是r'\\d'就可以了

在正则表达式中,涉及到特殊转义的内容,都放在"r"中

在工具网页上匹配成功后,在python中匹配不成功,匹配的字符串中又带有转义符(\),那么直接将测试好的内容都放在"r"中

猜你喜欢

转载自www.cnblogs.com/lianghui-lianghui/p/9300330.html