2021-06-01 python正则表达式_笔记

python正则表达式

1.方法:
方法名称(参数)描述
re.search(pattern, string, flags=0)进行正则匹配
re.match(pattern, string, flags=0)只匹配字符串的开始
re.findall(string[, pos[, endpos]])找出所有符合条件的字符列表
re.split(pattern, string[, maxsplit=0, flags=0])根据条件进行切分
re.sub(pattern, repl, string, count=0, flags=0)根据条件进行替换
2.模式:
模式描述
\d匹配任意数字**[0-9]**
\D匹配任意非数字
\w匹配字母数字及下划线**[A-z0-9_]**
\W匹配非字母数字及下划线
\s匹配任意空白字符 [ \t\n\r\f]
\S匹配任意非空字符
\b匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er\b’ 可以匹配"never" 中的 ‘er’,但不能匹配 “verb” 中的 ‘er’。
\B匹配非单词边界。‘er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’。
3.量词:
数量词含义
*匹配前一个字符0次或无限次
+匹配前一个字符1次或无限次
匹配前一个字符0次或1次
{m}匹配前一个字符m次
{m,n}匹配前一个字符m~n次
{m,}匹配前一个字符m次以上
3.案例:

# . 可以被当作任意字符, re.M 忽略开头的换行符

res = re.match('^z.+\d', 'zhang123san', flags=re.M)
print(res.group())	#zhang123

# ^ 匹配当前字符串的开头, ^h表示以h开头,d$以d结尾

res = re.search('^h[a-z\s]+d$', 'hello world')
print(res.group())	#hello world

# $ 表示结尾

res = re.search('y[A-z]+$', 'hua123Xing45ZhiYuan',re.I)
print(res.group())	#Yuan

# * 表示匹配0个或者多个

print(re.findall('ab*', 'alexabbtomab'))

# ['a', 'abb', 'ab']

# + 表示匹配一个或者多个

print(re.findall('x\d+a', 'alex123abc'))

# ['x123a']

# ? 匹配0个或者一个

print(re.findall('宋惠乔?', '宋惠 宋惠乔'))

# ['宋惠', '宋惠乔']

# {1,3} 匹配一个到三个之间

print(re.findall('[0-9]{1,3}', 'alex123alex1alex12'))

# ['123', '1', '12']

# | 进行或操作的匹配,匹配其中一个即可

print(re.search('abc|ABC', 'ABCabcCD').group())

# ABC

# 将需要匹配的字母进行统一的保存

string = re.search('(abc){2}(\|\|=){2}', '123abcabc||=||=')
print(string.group())

# abcabc||=||=

# \A 表示以什么开头, 相当于上面的^

print(re.search('\Aa.+b\Z', 'a123b').group())

# a123b

# \Z 表示以什么结尾,相当于上面的$

print(re.search('b.+d\Z', '11b23d').group())

# b23d

# \D 匹配非数字

print(re.search('\D+', '123$-a').group())

# $-a

# \w 匹配数字或者字母

print(re.search('\w+o\w+', 'the old tsoms').group())

# tsoms

# \W 匹配非数字或者字母

print(re.search('\W+', 'abc123%-%-%abc').group())

# %-%-%

# \s 匹配空包字符 \n\r\t

print(re.findall('\s+', 'sd \r\n sd'))

# [' \r\n ']

# (?P<>[]+) 进行分组构造字典

A = re.search('(?P<id>[0-9]+)(?P<name>[a-z]+)', '123alex')
print(A.groupdict())

# {'id': '123', 'name': 'alex'}

# re.split() 进行数据切分

print(re.split('[ ]+', '123  123 12'))

# ['123', '123', '12']

# re.sub 表示将数字进行替换|

print(re.sub('[0-9]+', '|', 'acv1dae2dasd3ads'))

# acv|dae|dasd|ads

# 进行反斜杠匹配 r’\’

print(re.split(r'\\', r'abc\123'))

# ['abc', '123']

# re.I 忽略大小写

print(re.search('[a-z]+', 'abcA', re.I).group())

# abcA

# re.M 忽略开头的\n

print(re.search('^d123', '\nd123456', flags=re.M).group())

# d123

# re.S 匹配所有的字符串,包括换行符

print(re.findall(r'd.+s', 'd123\n\rs123', flags=re.S))

# ['d123\n\rs']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值