Python re模块与正则表达式详解

Python 中使用re模块处理正则表达式,正则表达式主要用来处理文本中的查找,匹配,替换,分割等问题;我们先来看一个问题,切入正则表达式。
问题:
匹配字符串,最少以3个数字开头。使用Python代码如何实现?
检查条件:
1>字符串长度判断;
2>判断前三个字符是否是数字;
这样实现起来有点啰嗦,我们可以使用正则表达式,先来看正则表达式基本语法。
1 正则表达式基本语法
. 匹配任意字符(不包括换行符)
^ 匹配开始位置,多行模式下匹配每一行的开始
$ 匹配结束位置,多行模式下匹配每一行的结束

  •        匹配前一个元字符0到多次
    
  •        匹配前一个元字符1到多次
    

? 匹配前一个元字符0到1次
{m,n} 匹配前一个元字符m到n次
\ 转义字符,例如.只能匹配.
[] 字符集,一个字符的集合,可匹配其中任意一个字符
\d 匹配一个数字, 相当于 [0-9]
\D 匹配非数字,相当于 [^0-9]
\s 匹配任意空白字符, 相当于 [ \t\n\r\f\v]
\S 匹配非空白字符,相当于 [^ \t\n\r\f\v]
\w 匹配数字、字母、下划线中任意一个字符, 相当于 [a-zA-Z0-9_]
\W 匹配非数字、字母、下划线中的任意字符,相当于 [^a-zA-Z0-9_]
| 逻辑表达式 或 ,比如 a|b 代表可匹配 a 或者 b
(…) 分组
给一坨这个玩意,怎么用,都需要记住吗?
如果能记住就记住,如果很久不使用,就忘记吧;
等使用的时候直接查资料,理解能使用即可。
下面我们结合re模块,看正则表达式如何使用。
2 re.compile方法;
Python中正则表达式执行过程:根据表达式编译生成Pattern对象,然后进行相关处理;
如果高频率使用一个固定的正则表达式,我们可以提前生成Pattern对象,提高效率。
compile方法:

import re
re.compile(pattern, flags=0) #pattern为正则表达式

参数:
pattern:正则表达式,是指为字符串;为了防止转义推荐使用原字符串(r’xxx’);
flags:编译标志位,修改正则表达式的匹配方式,例如:大小写区分,换行处理等;
例子:匹配任意一个数字开头字符串:

import re
pobj = re.compile(r'\d')
type(pobj)

输出结果:re.Pattern对象;
问题:如何来匹配呢?
3 re.match方法
re.match方法:从起始位置开始匹配,返回None或者re.Match对象;

#re模块match方法,参数:pattern:正则表达式,string:处理字符串
re.match(pattern, string, flags=0)
#re.Pattern对象中match方法,参数:string:处理字符串
re.Pattern.match(string, pos=0, endpos=...)

练习:匹配一个数字开头字符串:

import re
ma = re.match(r'\d', '123')
print(ma)

输出结果:

<re.Match object; span=(0, 1), match='1'>

match方法匹配过程:生成Pattern对象,然后进行匹配;
如何获取匹配结果?来看Match对象相关方法。
在这里插入图片描述
实际操作下,理解起来就容易了:

import re
import re
#正则表达式:匹配内容:数字+a~z+数字,并且进行分组
ma = re.match(r'(\d)\w*(\d)', '1c3')
#匹配结果:'1c3'
print('group():', ma.group
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值