基础1

  • 全局匹配函数使用格式

re.compile(正则表达式).findall(源字符串)

普通字符 正常匹配
\n 匹配换行符
\t 匹配制表符
\w 匹配字母、数字、下划线
\W 匹配除字母、数字、下划线
\d 匹配十进制数字
\D 匹配除十进制数字
\s 匹配空白字符
\S 匹配除空白字符
[ab89x] 原子表,匹配ab89x中的任意一个
[^ab89x^] 原子表,匹配除ab89x以外的任意一个字符

实例1

源字符串 正则表达式 匹配结果
“aliyunedu” “yu” yu
“‘aliyun\nedu’” “yun\n” yun\n
“aliyu89787nedu” “\w\d\w\d\d\w” u89787
“aliyu89787nedu” “\w\d[nedu]\w” 87ne

基础2

正则表达式 含义
. 匹配除换行外任意一个字符
^ 匹配开始位置
$ 匹配结束位置
  • | 前一个字符出现0\1\多次
    ? | 前一个字符出现0\1次
  • | 前一个字符出现1\多次
    {n} | 前一个字符恰好出现n次
    {n,} | 前一个字符至少n次
    {n,m} | 前一个字符至少n次,至多m次
    | | 模式选择符或
    () | 模式单元,通俗来说就是,想提取出什么内容,就在正则中用小括号将其括起来

tips:默认贪婪,即默认尽可能多的进行匹配

实例2

源字符串 : “aliyunnnnji87362387aoyubaidu”

正则表达式 匹配结果
“ali…” aliyun
“^li…” None
“bai..$” baidu
“ali.*” aliyunnnnji87362387aoyubaidu
“aliyun+” aliyunnnnn
“aliyun?” aliyun
“yun{1,2}” yunn
^al(i..)” iyu

基础3

贪婪模式: 尽可能多的匹配

懒惰模式: 尽可能少的匹配,精准模式

默认贪婪模式

如果出现如下组合,则代表为懒惰模式:

*?

+?

实例3

源字符串:”poytphonyhjskjsa”

正则表达式 匹配结果
“p.*y” poytphony
“p.*?y” [‘poy’,’phony’]

第一个贪婪模式

第二个懒惰模式,精准匹配


基础4

模式修正符:在不改变正则表达式的情况下通过模式修正符使匹配结果发生更改

re.S 让.也可以匹配多行

re.I 让匹配时忽略大小写

实例4

string = “””我是阿里云大学\n欢迎来学习\nPython网络爬虫课程”””

pat=”阿里.*?Python”

源字符串 正则表达式 匹配方式 匹配结果
“Python” “pyt” re.compile(“pyt”).findal(“Python”) []
“Python” “pyt” re.compile(“pyt”,re.I).findall(“Python”) Pyt
“Python” “pyt” re.compile(“pyt”.re.I).findall(“Python”) Pyt
string pat re.compile(pat).findall(string) []
string pat re.compile(pat,re.S).findall(string) [‘阿里云大学\n欢迎来学习\nPython’]