Python:【学习笔记】re库的使用

1 re库介绍

re库是python的标准库之一,re 是 regular expression 的缩写,又称为:正则表达式,其优势在于简洁明了,通过字符串表达框架。

2 使用方法

常用操作符说明
.表示除换行符外的任意单个字符
[ ]字符集,单个字符取值为[ ]内的任意一个字符
[^ ]非字符集,单个字符取值一定不为[ ]内的任何字符
*表示前一个字符在区间 [0, +∞) 内任意整数次扩展
+表示前一个字符在区间 [1, +∞) 内任意整数次扩展
?表示前一个字符0次或者1次扩展
{m}表示前一个字符m次扩展
{m,}表示前一个字符在区间 [m, +∞) 内任意整数次扩展
{m,n}表示前一个字符在区间 [m, n] 内任意整数次扩展
^匹配字符串开头
$匹配字符串结尾
( )分组标记
\d表示任意一个数字字符,即0~9其中一个
\w表示任意一个字母或数字或下划线或汉字字符
\s表示任意的空白符
\b表示单词的开始或者结束

3 常用表达

3.1 由26个字母组成的字符串

r'^[A-Za-z]+$'

3.2 整数形式

r'^-?\d+$'

3.3 正整数形式

r'^[0-9]*[1-9][0-9]*$'

3.4 IP地址

r'(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]).){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])'

4 库函数

函数说明
re.search( )搜索匹配正则表达式第一个位置,返回match对象
re.match( )从字符串开始起位匹配正则表达式,返回match对象
re.findall( )搜索字符串,返回全部符合字串
re.split( )将一字符串按照正则匹配结果分割,返回列表类型
re.finditer( )搜索字符串,返回元素为match对象的迭代类型
re.sub( )在字符串中替代所有正则表达式子串,返回字符串

4.1 re.search(pattern, string, flags = 0)

  • pattern: 模式字符串,由要匹配的正则表达式转换而来
  • string: 待匹配字符串
  • flags: 可选参数,使用时控制标记,具体如下:
标志说明
A 或 ASCII对于\w,\b,\d,\s只进行ASCII匹配
I 或 IGNORECASE执行不区分字母大小写
M 或 MULTILINE将^和$用于整个字符串的开始和结尾的每一行
S 或 DOTALL使用 . 字符匹配所有字符,包括换行符
X 或 VERBOSE忽略字符串中未转义的空格和注释

4.2 re.match(pattern, string, flags = 0)

  • pattern: 模式字符串,由要匹配的正则表达式转换而来
  • string: 待匹配字符串
  • flags: 可选参数,使用时控制标记,具体如下:
标志说明
A 或 ASCII对于\w,\b,\d,\s只进行ASCII匹配
I 或 IGNORECASE执行不区分字母大小写
M 或 MULTILINE将^和$用于整个字符串的开始和结尾的每一行
S 或 DOTALL使用 . 字符匹配所有字符,包括换行符
X 或 VERBOSE忽略字符串中未转义的空格和注释

4.3 re.findall(pattern, string, flags = 0)

  • pattern: 模式字符串,由要匹配的正则表达式转换而来
  • string: 待匹配字符串
  • flags: 可选参数,使用时控制标记,具体如下:
标志说明
A 或 ASCII对于\w,\b,\d,\s只进行ASCII匹配
I 或 IGNORECASE执行不区分字母大小写
M 或 MULTILINE将^和$用于整个字符串的开始和结尾的每一行
S 或 DOTALL使用 . 字符匹配所有字符,包括换行符
X 或 VERBOSE忽略字符串中未转义的空格和注释

4.4 re.split(pattern, string, maxsplit = 0, flags = 0)

  • pattern: 模式字符串,由要匹配的正则表达式转换而来
  • string: 待匹配字符串
  • maxsplit: 可选参数,最大匹配分割数
  • flags: 可选参数,使用时控制标记,具体如下:
标志说明
A 或 ASCII对于\w,\b,\d,\s只进行ASCII匹配
I 或 IGNORECASE执行不区分字母大小写
M 或 MULTILINE将^和$用于整个字符串的开始和结尾的每一行
S 或 DOTALL使用 . 字符匹配所有字符,包括换行符
X 或 VERBOSE忽略字符串中未转义的空格和注释

4.5 re.finditer(pattern, string, flags = 0)

  • pattern: 模式字符串,由要匹配的正则表达式转换而来
  • string: 待匹配字符串
  • flags: 可选参数,使用时控制标记,具体如下:
标志说明
A 或 ASCII对于\w,\b,\d,\s只进行ASCII匹配
I 或 IGNORECASE执行不区分字母大小写
M 或 MULTILINE将^和$用于整个字符串的开始和结尾的每一行
S 或 DOTALL使用 . 字符匹配所有字符,包括换行符
X 或 VERBOSE忽略字符串中未转义的空格和注释

4.6 re.sub(pattern, repl, string, count = 0, flags = 0)

  • pattern: 模式字符串,由要匹配的正则表达式转换而来
  • repl: 表示替换的字符串
  • string: 表示被查找替换的原始字符串
  • count: 可选参数,表示匹配最大次数
  • flags: 可选参数,使用时控制标记,具体如下:
标志说明
A 或 ASCII对于\w,\b,\d,\s只进行ASCII匹配
I 或 IGNORECASE执行不区分字母大小写
M 或 MULTILINE将^和$用于整个字符串的开始和结尾的每一行
S 或 DOTALL使用 . 字符匹配所有字符,包括换行符
X 或 VERBOSE忽略字符串中未转义的空格和注释

5 贪婪匹配和最小匹配

5.1 贪婪匹配原则

re库自动搜索时默认贪婪匹配,即返回最长的符合字符串。

5.2 最小匹配原则

对正则表达式进行以下修改,则返回最短的符合字符串:

修改前修改后
** ?
++?
??
{m,n}{m,n}?
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值