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)(?nameexp) 分组捕获 给组命名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第六周 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

Python学习笔记第六周

Python第六周 学习笔记

Python学习笔记——基础篇第六周——logging模块

Python学习笔记——基础篇第六周——shutil模块

Python学习笔记——基础篇第六周——Subprocess模块

Python学习笔记——基础篇第六周——面向对象