目录
正则表达式是一种匹配规则,专门用来匹配字符串。比如说QQ邮箱都具有特定的格式,都是以@qq.com结尾,假如现在我们在网上爬取了一大堆的QQ邮箱,就可以使用正则去提取所有的QQ邮箱,而不会把163邮箱提取出来。
正则表达式本身就是一个字符串,如:正则表达式:'1[35789]\d\d\d\d\d\d\d\d\d'用来匹配国内的11位手机号码。

大写英文字母:A-Z;小写英文字母:a-z;数字:0-9;转义字符:\n,\t,\b等;特殊字符:!,@,#,_,<,>等。汉字字符:我,爱,你等。

形如一般字符串的正则表达式就是字面量,如:"hello"就是表示去找在一个字符串中有没有hello这个字符。例子:"hello123"字符串使用match,正则表达式为字面量'hello',就会匹配到hello。
符号.可以代替除\n外的所有字符。他只能代表一个字符,而不能代表多个。
- import re
-
- print(re.match('.', string="1"))
- print(re.match('.', string="\n"))
- print(re.match('.', string="A"))
- print(re.match('.', string="a"))
- print(re.match('.', string="!"))
- print(re.match('.', string="我"))
- #
- # None
- #
- #
- #
- #
表示匹配[]里面的元素。比如:'H[123456]'表示H1,H2,H3,H4,H5,H6等6种字符组合。常见的有:[A-Z]表示A-Z所有的大写字母;[a-z]表示a-z所有的小写字母;[0-9]表示0-0之间的数字;[A-Za-z0-9_]表示A-Z,a-z,0-9所有字符以及下划线;[^0-9]表示0-9之外的所有字符,^表示取反。
同样的,[]只能代表一个字符,而不能代表多个字符。
- import re
-
- print(re.findall('H[123456]', string="H1,H2,H3,H4,H5,H6"))
- # ['H1', 'H2', 'H3', 'H4', 'H5', 'H6']

也就是:\w代表a-z,A-Z,0-9中的任意一个字符。\W表示a-z,A-Z,0-9之外的任意一个字符。注:\w与[A-Za-z0-9]等价。单个\w表示一个字符,两个\w\w表示两个字符,以此类推。
- import re
-
- print(re.match('\w', string="H1,H2,H3,H4,H5,H6"))
- #
- print(re.match('\W', string="@H1,H2,H3,H4,H5,H6"))
- #
- print(re.match('\w', string="@H1,H2,H3,H4,H5,H6"))
- # None

空白字符指的是:无法显示的字符,比如:空格,\n,\t,\b,\r等。

限定的对象有:单个正则匹配符,字面字符。









正则表达式本身就是一个字符串,里面假如带有\n,\\等字符时会被转义,但是我们就想要双斜杠\\而不是转义后的\,就可以使用原生字符串。python中,在字符串前面加上r就表示原生字符串。
- str1 = r"c:\\windows\\cmd"
- print(str1)
- # c:\\windows\\cmd
下图蓝色框就是边界。也就是每个字符之间的空隙就是边界。最左边"与i之间也叫边界。t和r之间有一个空格,空格与t与r之间也叫边界。

边界字符实际上也是限定符,他是一边界为位置进行限定。



\b说明一个间隙两边的字符至少有一个不是字符,也就是至少有一个字符,不能同时都是字符,比如"ab",ab之间存在间隙边界,但两边一个是a一个是b,所有"ab"不会被匹配到。
[^0-9]表示0-9之外的字符。
|表示同时写多个正则表达式去进行匹配。如:'aa|bb|cc'表示先拿aa去匹配再拿bb去匹配,最后拿cc去匹配。
这里的分组指的是对匹配的结果进行分组,而分组的依据就是正则表达式里面的括号。如果不加括号,则不会分组(但是默认存在一个组)。




+,*,?,{m,n}表示对一个字符进行重复,他们都是尽可能的匹配到最多的字符,比如:'123456789',贪婪模式就是尽可能把9个数字都匹配到,那假如我们只需要匹配12345该怎么办?这个时候可以使用非贪婪模式。


sub函数和subn函数用于实现搜索和替换功能。这两个函数的功能几乎完全相同,都是将某个字符串中所有匹配正则表达式的部分替换成其他字符串。用来替换的部分可能是一个字符串,也可以是一个函数,该函数返回一个用来替换的字符串。sub函数返回替换后的结果,subn函数返回一个元组,元组的第1个元素是替换后的结果,第2个元素是替换的总数。语法格式如下:







