python爬虫之re(自用)

元字符

正则表达式中使⽤了很多元字符,⽤来表示⼀些特殊的含义或功能
python爬虫之re(自用)

python爬虫之re(自用)
尚未列出的还有问号?、星号*和括号等其他的符号。所有正则表达式中具有特殊含义的字符在匹配自身的时候,都要使用斜杠进行转义。这些转义字符的匹配用法与普通字符类似,也是匹配与之相同的一个字符

预定义匹配字符集

python爬虫之re(自用)

重复匹配

python爬虫之re(自用)
python爬虫之re(自用)

位置匹配

python爬虫之re(自用)

贪婪与非贪婪模式

re模块自带贪婪模式,总是尽可能多的匹配符合它规则的字符。
在修饰匹配次数的特殊符号后再加上一个 “?” 号,则可以使匹配次数不定的表达式尽可能少的匹配,使可匹配可不匹配的表达式,尽可能的 “不匹配”
python爬虫之re(自用)

re模块常用方法

python爬虫之re(自用)

match(pattern, string, flags=0)

第一个参数是正则表达式,如果匹配成功,则返回一个match对象,否则返回一个None
第二个参数表示要匹配的字符串
第三个参数是标致位用于控制正则表达式的匹配方式 如: 是否区分大小写,多行匹配等等

compile(pattern, flags=0)

这个⽅法是re模块的工厂法,⽤于将字符串形式的正则表达式编译为Pattern模式对象,可以实现更加效率的匹配。第二个参数flag是匹配模式 使用compile()完成一次转换后,再次使用该匹配模式的时候就不能进行转换了。经过compile()转换的正则表达式对象也能使用普通的re⽅法

search(pattern, string, flags=0)

在文本内查找,返回第一个匹配到的字符串。它的返回值类型和使用方法与match()是一样的,唯一的区别就是查找的位置不用固定在文本的开头

findall(pattern, string, flags=0)

作为re模块的三大搜索函数之一,findall()和match()、search()的不同之处在于,前两者都是单值匹配,找到一个就忽略后面,直接返回不再查找了。而findall是全文查找,它的返回值是一个匹配到的字符串的列表。这个列表没有group()方法,没有start、end、span,更不是一个匹配对象,仅仅是个列表!如果一项都没有匹配到那么返回一个空列表

split(pattern, string, maxsplit=0, flags=0)

re模块的split()方法和字符串的split()方法很相似,都是利用特定的字符去分割字符串。但是re模块的split()可以使用正则表达式,因此更灵活,更强大
plit有个参数maxsplit,用于指定分割的次数

sub(pattern, repl, string, count=0, flags=0)

sub()方法类似字符串的replace()方法,用指定的内容替换匹配到的字符,可以指定替换次数

flag匹配模式

python爬虫之re(自用)
python爬虫之re(自用)