基础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’] |
I'm so cute. Please give me money.
- 本文链接:https://wentianhao.github.io/2020/02/19/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%9F%BA%E7%A1%80/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
若没有本文 Issue,您可以使用 Comment 模版新建。