目标:

    1:掌握正则模块 re 抓取数据的两种方法形式

    2:掌握正则模块 re 方法的 re.S参数的作用

    3:掌握正则表达式贪婪模式以及非贪婪模式的注意事项

    4:掌握正则表达式单个分组以及多个分组的用法

    一:正则模块 re 抓取数据的两种方法形式

    第一种形式(直接使用findall(查找数据)方法):

    data_list = re.findall(正则表达式,待匹配字符串,re.S)

    第二种形式(先创建正则编译对象在调用findall等方法):

    pattern = re.compile(正则表达式,re.S)
    data_list = pattern.findall(待匹配字符串)


    注意事项:一般大佬都用第二种形式,因为正则写好一个可以多次调用

    图示:

    image.png

    二:正则模块 re 方法的 re.S参数的作用

    作用:正则表达式中的元字符 . 可以匹配任意字符(除了换行符/n),在findall等方法内部加上参数re.S后 元字符 . 就可以匹配换行符/n

    注意:在抓取 html 代码时一定不要忘记写 re.S参数,因为 html 代码有很多换行符

    图示:

    image.png


    三:正则表达式贪婪模式以及非贪婪模式的注意事项

    元字符功能: ? 前一个字符出现1次或者0次

    贪婪模式:在满足匹配规则的前提下尽可能多的匹配数据

    非贪婪模式:在满足匹配规则的前提下尽可能少的匹配数据

    注意事项:

    1:贪婪模式与非贪婪模式说的都是在匹配多个字符时才适用,即元字符 + ?
    2:python程序默认是贪婪模式匹配数据
    3:在匹配多个数据的元字符(
    +?)后面加上 ? 就可将贪婪模式转变为非贪婪模式,注意一定是在匹配多个元字符后面加才管用!!!



    四:正则表达式单个分组以及多个分组的用法

    用法【单个分组】:如果在正则表达式的一部分加上单个分组,也就是一个() 那么在调用 findall方法时,只将符合分组内的数据提取到列表内!

    用法【多个分组】:如果在正则表达式的一部分加上多个分组,也就是多个() 那么在调用 findall方法时,将符合多个分组内的数据先保存到一个元组内,然后在匹配其他符合分组的数据,再次存放到另一个元组内,然后在将多个元组存放至列表中【列表内嵌套元组】

    图示【单个分组】 【多个分组】:

    image.png