一正则表达式的语法
正则表达式是用来匹配或者描述字符串的工具
用处:
a.判断输入的字符是否是手机号/邮箱,是否是ip地址
b.提取满足条件的字符串
c.字符串替换
python中通过re模块中相应的方法来支持正则表达式的匹配、查找和替换的功能

fullmatch(正则表达式,字符串)--->判断正则表达式是否完全匹配
正则表达式:就是一个字符串,字符串中是正则表达式语法, r'正则表达式'
正则表达式中包含两个部分,一个是正则表达式语法对应的字符,二是普通字符
1. .(匹配任意字符)
一个.只匹配一个任意字符

2. \w(匹配一个字符)
一个\w只匹配一个字符

3. \s(匹配任意空白字符)
空白字符:空格、制表符( \t)、回车(换行(\n))、等输入空白字符
一个\s只匹配一个空白字符

4. \d(匹配数字字符)

5. \b(检测边界)
一个\b不会去匹配一个字符,而是单纯的检测\b出现的位置是否是单词边界
单词边界:字符串开始和结尾、空格、换行、标点符号等,可以将两个单词隔开的字符都是带刺边界

6. ^(检测是否是字符串开头)

7. $(检测是否是字符串结尾)

8.\W(匹配非字母,数字下划线)

9. \S(匹配非空白字符)

10. \D(匹配非数字字符)

11. \B(检测是否不是边界)

12. [](在括号中出现任意一个字符)
[字符集] --->匹配一个字符,这字符是字符集的任意一个字符
[字符1-字符2]--->匹配一个字符,这个字符是Unicode编码值在字符1到字符2中的任意一个字符,字符1的编码值小于字符2
例如:[1-9] --->数字1-9
[a-z] ---->小写字母
[A-Z]----->大写字母
注意:’-‘在括号中,如果放在两个字符之间表示范围

13. [^字符集]-->(匹配一个不在字符集中的任意一个字符)

二.正则表达式次数相关符号

1. *(匹配0次或者多次)
字符*--->字符出现0次或者多次

2. +(匹配一次或者多次)

3. ?(匹配0次或者一次)

4.{}(指定次数)

三.分支和分组
import re
1. | (分支)
条件1 | 条件2 ---->先用条件1去匹配,如果匹配成功就成功,如果条件1失败,用条件2去匹配
注意:如果条件1匹配不成功就不会去匹配条件2

2.()(分组)
a.组合(将括号的内容作为一个整体操作)
b.捕获--->使用带括号的正则表达式匹配成功后,只获取括号中的内容
c.重复-->再正则表达式中可以通过\数字来重复前面()中匹配到的结果,数字代表前第几个分组

3.转义字符
正则表达式可以通过在特殊的符号前加\,来让特殊的符号没有意义
. + * $ ^ 等有特殊的功能
注意:在中括号有特殊功能的符号,只代表符号本身
\不管在哪儿都需要转义
-在[]外面没有特殊功能,在[]中要表示-本身,就不要放在两个字符之间
()需要转义

四.re模块中的函数
import re
1. compile
compile(正则表达式字符串) --> 将正则表达式字符串转换成正则表达式对象

2.fullmatch和match
fullmatch(正则表达式字符串, 字符串)
--> 用正则表达式去完全匹配字符串(匹配整个字符串),返回匹配对象(SRE_Match)或者None
match(正则表达式字符串, 字符串)
--> 匹配字符串开头,返回匹配对象或者None

2.group(group = 0) --> 获取匹配结果
group()/group(0) --> 获取正则表达式完全匹配的结果
group(index>0) --> 获取正则表达式中第group个分组匹配到的结果

3.search
search(正则表达式, 字符串)
--> 查找字符串中满足正则表达式的第一个字符串。返回值是匹配对象或者None

4.findall
findall(正则表达式, 字符串) --> 获取字符串中满足正则表达式的所有的子串,返回一个列表
注意:如果正在表达式中有分组,取值的时候只取分组中匹配到的结果;
如果有多个分组,会将每个分组匹配到的结果作为一个元祖的元素

5.finditer
finditer(正则表达式, 字符串)
--> 查找所有满足正则条件的子串,返回值是迭代器,迭代器中的元素是匹配对象

6. split
split(正则表达式,字符串) --> 将字符串按照满足正则表达式条件的子串进行分割

7.sub
sub(正则表达式,repl,字符串) --> 将字符串中满足正则表达式条件的子串替换成repl。返回替换后的字符串

网友评论