基础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 模版新建。