day024 正则表达式 re模块

时间:2022-12-15 15:56:06

正则表达式:

.     匹配除换⾏行行符以外的任意字符

\w    匹配字⺟母或数字或下划线

\s    匹配任意的空⽩白符

\d    匹配数字

\n    匹配⼀一个换⾏行行符

\t    匹配⼀一个制表符

\b    匹配⼀一个单词的结尾

   匹配字符串串的开始

$     匹配字符串串的结尾

\W    匹配⾮非字⺟母或数字或下划线

\D    匹配⾮非数字

\S    匹配⾮非空⽩白符

a|b   匹配字符a或字符b

()    匹配括号内的表达式,也表示⼀一个组

[...]    匹配字符组中的字符

[^...]    匹配除了了字符组中字符的所有字符

量词:

*    重复零次或更更多次

+    重复⼀一次或更更多次

?    重复零次或⼀一次

{n}    重复n次

{n,}    重复n次或更更多次

{n,m}    重复n到m次

.*? XXX 的特殊含义,找到下一个XXX为止

Re模块

正则中分组(?P<name>.*?) 字典中的key,提取为value=ret.group("name")

1.  findall 查找所有. 返回list

2.  search 会进行匹配. 但是如果匹配到了了第⼀一个结果. 就会返回这个结果. 如果匹配不 上search返回的则是None

3.  match  只能从字符串串的开头进⾏行行匹配,匹配到则返回结果

4.  finditer 和findall差不多. 只不过这时返回的是迭代器

其他操作:

1.  re.split(“[ab]”,”asdfasdfasfw”)  先按a分割得到的结果在对b进行分割 最后得到字典     (分割)  但是(ab)加上括号后就会在切割结果中保留切割部分[a,b,….]

2.  re.sub(r”\d+”,”sb”,”sadfsdff1561dsfsd”)将字符串中的数字换成sb得到字符串            (替换)

3.  re.subn(r”\d+”,”sb”,”sadfsdff1561dsfsd”)  将字符串中的数字转换成sb,返回元组( 替换结果, 替换的次数 )

4.  obj=re.compile(r“正则内容”)将字符串编译成正则表达式  (obj为正则表达式)

5.  ret=obj.search(“内容”),结果为按照正则表达式来匹配内容

爬虫重点:

Obj=re.compile(正则表达式)

Ret=obj.search(“范围”) 搜索 但一般用finditer(“查找范围”)

Ret.group()返回整个内容

Ret.group(“name”)  返回组的内容