Python第六周 学习笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python第六周 学习笔记相关的知识,希望对你有一定的参考价值。
正则表达式
基本语法
元字符
代码 | 说明 | 举例 |
---|---|---|
. | 匹配除换行符外任意一个字符 | |
[abc] | 字符集合,只能表示一个字符位置。匹配所包含的任意一个字符 | |
[^abc] | 字符集合,只能表示一个字符位置。匹配除去集合内字符的任意一个字符 | |
[a-z] | 字符范围,一个集合,表示一个字符位置匹配所包含的任意一个字符 | |
[^a-z] | 字符范围,一个集合,表示一个字符位置匹配除去集合内字符的任意一个字符 | |
\b | 匹配单词的边界 | |
\B | 不匹配单词的边界 | |
\d | 等同[0-9] 匹配一位数字 | |
\D | 等同[^0-9] 匹配一位非数字 | |
\s | 匹配1位空白字符,包括换行符、制表符、空格等同[\f\r\n\t\v] | |
\S | 匹配1位非空白字符 | |
\w | 等同[a-zA-Z0-9_] 包含中文 | |
\W | 匹配\w之外的字符 |
转义
- 凡是在正则表达式中有特殊意义的符号,转义时使用\
重复
代码 | 说明 | 举例 |
---|---|---|
* | 前面的正则表达式重复0次或多次 | |
+ | 前面的正则表达式重复至少一次 | |
? | 前面的正则表达式重复0次或1次 | |
{n} | 重复n次 | |
{n,} | 重复n次以上 | |
{n,m} | 重复n到m次 |
分组(捕获)断言
代码 | 说明 | 举例 | |
---|---|---|---|
x | y | 匹配x或y | |
(pattern) | 分组(捕获)后会自动分配组号从1开始可以改变优先级 \数字 匹配对应的分组(指的是前一个匹配上的分组的内容) | ||
(?:pattern) | 只改变优先级不分组 | ||
(?<name>exp)(?name exp) |
分组捕获 给组命名Python句法为(?P<name>exp) | ||
(?=exp) | 零宽度正预测先行断言断言exp一定在匹配的右边出现 | ||
(?<=exp) | 零宽度正回顾后发断言断言exp一定出现在匹配的左边出现 | ||
(?!exp) | 零宽度负预测先行断言断言exp一定不会出现在右侧 | ||
(?<!exp) | 零宽度负回顾后发断言断言exp一定不会出现在左侧 | ||
(?#comment) | 注释 |
断言不会占用分组号
贪婪与非贪婪
- 默认贪婪模式,尽可能多的匹配字符串
代码 | 说明 | 举例 |
---|---|---|
*? | 匹配任意次,尽可能少重复 | |
+? | 匹配至少一次,尽可能少重复 | |
?? | 匹配0或1次,尽可能少重复 | |
{n}? | 匹配至少n次,尽可能少重复 | |
{n,m}? | 匹配至少n次,至多m次,尽可能少重复 |
引擎选项
代码 | 说明 | 举例 |
---|---|---|
IgnoreCase | 匹配时忽略大小写 | re.Ire.IGNORECASE |
Singleline | 单行模式,可穿透/n | re.Sre.DOTALL |
Multiline | 多行模式 | re.Mre.MULTILINE |
IgnorePatternWhitespace | 忽略表达式中空白字符,若要使用空白字符 | re.Xre.VERBOSE |
代码 说明 举例
IgnoreCase 匹配时忽略大小写 re.Ire.IGNORECASE
Singleline 单行模式,可穿透/n re.Sre.DOTALL
Multiline 多行模式 re.Mre.MULTILINE
IgnorePatternWhitespace 忽略表达式中空白字符,若要使用空白字符 re.Xre.VERBOSE
Python中使用|(位或)运算开启多种选项
Python正则表达式
re模块
编译
- re.compile(pattern, flags=0)
- 返回正则表达式对象regex
- 正则表达式编译的结果保存,下次使用同样的pattern时不需要重新编译
单次匹配
-
regex.match(string[, pos[, endpos]])
- 从字符串开头匹配,可指定开始与结束位置 返回match对象
-
regex.search(string[, pos[, endpos]])
- 从头搜索直到第一个匹配,可指定开始与结束位置 返回match对象
- regex.fullmatch(string[, pos[, endpos]])
- 整个字符串与正则表达式匹配
全文搜索
-
regex.findall(string[, pos[, endpos]])
- 对整个字符串从左至右匹配,返回所有匹配项的列表
- regex.finditer(string[, pos[, endpos]])
- 对整个字符串,从左至右匹配,返回所有匹配项的迭代器,每项都是match对象
匹配替换
-
regex.sub(replacement, string, count=0)
- 使用pattern对字符串string进行匹配,对匹配项用replacement替换
- replacement可以是string、bytes、function
- regex.subn(replacement, string, count=0)
- 功能类似sub 返回一个元组 (new_string, number_of_subs_made)
分割字符串
- regex.split(string, maxsplit=0)
- 返回列表
分组
-
使用(pattern)捕获的数据放到组中
- match类方法
-
group(N)
- 1-N时对应的分组 0但会整个匹配的字符串
- 如果使用了命名分组,可用group(name)方式取出
-
groups()
- 返回所有组的一个元组
- groupdict()
- 返回所有命名分组的字典
TODO:argparse
以上是关于Python第六周 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章