python标准库—re,正则表达

基本用法(点击链接:在线正则表达式测试)

import re
1、findall 查找所有. 返回list

string  = '我是身高为170的女孩'
ex = "\d+" # 正则表达式
# 第一个参数:表达式,第二个:被匹配的目标值,返回个list,第三个:re.S用来处理回车,忽略回车
print(re.findall(ex,string,re.S)) 

2、 search会进⾏匹配. 但是如果匹配到了第⼀个结果. 就会返回这个结果. 如果匹配不上search返回的则是None
ret = re.search(r'\d', '5点之前. 你要给我5000万').group()
print(ret)  
ex = '(?P<id>\d*)' # ?P<id> 表示匹配出来的数据命名为id
ret = re.search(ex, '5点之前. 你要给我5000万').group('id')
print(ret)

3、match 只能从字符串的开头进⾏匹配
ret = re.match('a', 'abc').group() 
print(ret) 

4、finditer, 和findall差不多. 只不过这时返回的是迭代器
it = re.finditer("m", "mai le fo len, mai nimei!")
for el in it:
 print(el.group()) # 依然需要分组

5、compile() 可以将⼀个⻓⻓的正则进⾏预加载. ⽅便后⾯的使⽤
obj = re.compile(r'\d{3}') # 将正则表达式编译成为⼀个 正则表达式对象, 规则要匹配的是3个数字
ret = obj.search('abc123eeee') # 正则表达式对象调⽤search, 参数为待匹配的字符串
print(ret.group()) # 结果: 123

常用的正则表达式

一、匹配字符:
 . 匹配除换⾏符以外的任意字符
\w 匹配字⺟或数字或下划线
\d 匹配数字
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配⾮字⺟或数字或下划线
\D 匹配⾮数字
\S 匹配⾮空⽩符
a|b 匹配字符a或字符b
 () 匹配括号内的表达式,也表示⼀个组
[ABC] 匹配字符组中的字符
 [^...] 匹配除了字符组中字符的所有字符

二、量词: 控制前⾯的元字符出现的次数
* 重复零次或更多次
+ 重复⼀次或更多次
? 重复零次或⼀次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

三、贪婪匹配和惰性匹配
.* 贪婪匹配, 尽可能多的去匹配结果
.*? 惰性匹配, 尽可能少的去匹配结果
部分示例
import re
string  = '我是身高为170的女12孩1'
ex = "\d+" # \d提取数字,返回数字列表,+号表示将在一起的数字拼接起来
print(re.findall(ex,string)) 

string  = 'https,http'
ex = "https?" # 匹配http,或者https,?表示左侧的字符出现0-1次
print(re.findall(ex,string)) 

string  = '这是手机号13403484838'
ex = "1[3,5,6,7,8,9]\d{9}" #第1位是1,第二位是3,5,6,7,8,9,后面是9位数
print(re.findall(ex,string))

string  = ' 玩⼉吃鸡游戏, 晚上⼀起上玩儿游戏, ⼲嘛呢? 打游戏'
ex = "玩⼉.*游戏" #贪婪模式,尽量后面匹配,这样提取的数据就多,所以叫贪婪
ex = "玩⼉.*?游戏" #惰性模式,尽量往前匹配,这样就得到的数据就少
print(re.findall(ex,string))

string  = ' 玩⼉吃鸡游戏, 晚上⼀起上玩儿游戏, ⼲嘛呢? 打游戏'
ex = "玩⼉(.*?)游戏" #加上(),就只返回()内的数据
print(re.findall(ex,string))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑*杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值