2021/4/26爬虫第六次课(正则表达式)

文章目录

  • 一、正则表达式简介
  • 二、正则表达式的应用场景
  • 三、re库、match()函数
  • 四、pattern
    • 1 普通字符
    • 2 元字符
    • 3 预定义匹配字符集
    • 4 重复匹配
    • 5 位置匹配和贪婪与非贪婪模式
      • 位置匹配
      • 贪婪与非贪婪模式
  • 五、案例

一、正则表达式简介

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑
说明:正则不需要学太深,以后基本只会用到.?*

二、正则表达式的应用场景

  • 手机号、邮箱、密码
  • 爬虫

三、re库、match()函数

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

四、pattern

1 普通字符

字母、数字、汉字、下划线、以及没有特殊定义的符号,都是"普通字符"。正则
表达式中的普通字符,在匹配的时候,只匹配与自身相同的一个字符。
例如:表达式c,在匹配字符串abcde时,匹配结果是:成功;匹配到的内容
是c;匹配到的位置开始于2,结束于3。(注:下标从0开始还是从1开始,因
当前编程语言的不同而可能不同)
match()函数

2 元字符

正则表达式中使⽤了很多元字符,⽤来表示⼀些特殊的含义或功能
2021/4/26爬虫第六次课(正则表达式)_第1张图片
pattern里没有\时,不加r
pattern里有\时,加r

注意 以后在写正则表达式模板的时候 如果正则表达式的模板当中出现了一些元字符,但是这些元字符不在你的正则表达式的逻辑当中 用转义字符 " \ " 处理一下
一上两点无关,要分开考虑

3 预定义匹配字符集

正则表达式中的一些表示方法,可以同时匹配某个预定义字符集中的任意一个字符。比如,表达式\d可以匹配任意一个数字。虽然可以匹配其中任意字符,但是只能是一个,不是多个
2021/4/26爬虫第六次课(正则表达式)_第2张图片

4 重复匹配

前面的表达式,无论是只能匹配一种字符的表达式,还是可以匹配多种字符其中任意一个的表达式,都只能匹配一次。但是有时候我们需要对某个字段进行重复匹配,例如手机号码13666666666,一般的新手可能会写成\d\d\d\d\d\d\d\d\d\d\d(注意,这不是一个恰当的表达式),不但写着费劲,看着也累,还不⼀定准确恰当。
这种情况可以使用表达式再加上修饰匹配次数的特殊符号{},不但重复书写表达式就可以重复匹配。例如[abcd][abcd]可以写成[abcd]{2}
2021/4/26爬虫第六次课(正则表达式)_第3张图片
在这里插入图片描述

5 位置匹配和贪婪与非贪婪模式

位置匹配

有时候,我们对匹配出现的位置有要求,比如开头、结尾、单词之间等等
2021/4/26爬虫第六次课(正则表达式)_第4张图片

贪婪与非贪婪模式

在重复匹配时,正则表达式默认总是尽可能多的匹配,这被称为贪婪模式。例如,针对文本dxxxdxxxd,表达式(d)(\w+)(d)中的\w+将匹配第一个d和最后一个d之间的所有字符xxxdxxx。可见,\w+在匹配的时候,总是尽可能多的匹配符合它规则的字符。同理,带有?、*和{m,n}的重复匹配表达式都是尽可能地多匹配

  • 贪婪匹配 Python当中默认是贪婪的 总是尝试匹配尽可能多的字符
  • 非贪婪则和它相反 总是尝试匹配尽可能少的字符
  • 主要用于?后有东西

五、案例

校验数字的相关表达式:
2021/4/26爬虫第六次课(正则表达式)_第5张图片
特殊场景的表达式:
2021/4/26爬虫第六次课(正则表达式)_第6张图片

你可能感兴趣的:(正则表达式,re库,正则表达式,python)