正则表达式在python中的使用

常用正则表达式

\d 代表1个数字0-9
\D 代表一个非数字
\w 代表1个字符0-9 A-Z a-z
\W 代表1个非字符
\b 匹配一个单词边界
\B 匹配非单词边界
[注意]\bc:表示匹配以c开头的单词c,c\b:匹配以c为开头的单词c;/Bc:不以c开头匹配单词中所有的c,c\B:不以c结为匹配单词中所有的c
. 代表任意1个字符
\s 代表一个空格
. 代表一个.
() 字符串选择器(abc|cde|def)
[] 字符选择器
- | ,
[a-z] a到z的任意一个字符
[a|b|c] [abc] abc三个中的一个字符
[a,b,c]同上
{} 修饰符 通常修饰前面一个正则
\d{3,4} 最少3个数字最多4个数字
\d{3}必须是3位数字
\d{3,}最少3个数字最多无所谓
\d{,3} 最多3个数字
+ 修饰符 通常也修饰前面1个正则
\d+ 最少1个数字 最多无所谓
* 修饰符 通常也修饰前面1个正则
\d* 最少0个数字 最多无所谓
?修饰符 通常也修饰前面1个正则
\d? 最少0个字符 最多1个数字
? 将正则匹配模式改为非贪婪模式
^ 非
[^a] 此次不允许是a这个字母
^ 匹配方向
从左向右匹配
$匹配方向
从右向左匹配
^()$ 边界界定符
完整匹配整个字符串

python
常用方法:

表达式说明
compile()用于编译正则表达式,生成一个正则表达式( Pattern )对象
(常用) match()查看字符串的开头是否符合匹配模式,如果匹配失败,返回None
search()扫描整个字符串并返回第一个成功的匹配
(常用) findall()在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
sub()替换字符串中的匹配项
# 导入re
import re
# 使用分组
match = re.match(r'(\d)(\d)(\d)','123')
match.groups() # ('1', '2', '3')
match.group(1) # '1'
match.group(2) # '2'
match.group(3) # '3'
match.group(0) # '123'表示一个整体

# \1...\9匹配第n个分组的内容
ma = re.match(r'(\d(\d(\d)))\1\2\3', '123123233')
ma.groups() # ('123', '23', '3')
# \1:	123[123]233
# \2:	123123[23]3
# \3:	12312323[3]

# ?:跳过分组
ma = re.match(r'(\d(?:\d(\d)))-\2',  '647-7')
#?:在组2中,所以组2被跳过了,所以有两个分组
print(ma.groups()) # ('647', '7')

# 几个常用符号
# ?= 前向肯定界定符
re.findall(r'\b\w+(?=ing\b)','i am singing while you are dancing') # ['sing', 'danc']
# ?! 前向否定界定符
re.findall(r'\d{3}(?!\d)',"123sdf dd4567 890") # ['123', '567', '890']
# ?<= 后向肯定界定符
re.findall(r'(?<=\bre)\w+\b','reading a book') # ['ading'] 表示以re开头的单词的后面部分
# ?<! 后向否定界定符
re.findall(r'(?<![a-z])\d{7}',"88771234 b8001233 B8001232") # ['8877123', '8001232'] 表示匹配前面不是以字母开头的7位数字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值