关于Python3 正则表达式学习笔记

re

库函数

match

从字符串的起始位置匹配,且仅匹配一次.

匹配成功则返回匹配的对象,否则返回None

t = 'www.runoob.com'
matchObj = re.match("(.*?)\.(.*)n(.*)b(.*)m",t)

print(matchObj.span())
for i in range(0,5):
 print("group({}):[{}]".format(i,matchObj.group(i)))

search

扫描整个字符串并返回第一个成功的匹配

匹配成功则返回匹配的对象,否则返回None

sub

替换

findall

匹配字符串中所有的字符串

只要括号中的字符

语法

原子表

实例描述
[Aa]bc匹配Abc或abc
[a-z]匹配a到z之间的字符
[0-9A-Z]匹配0到9和A到Z之间的字符
[^1-5a-f_]匹配除数字1到5,a-f和下划线_之外的使用字符
[1-5^a-f]匹配数字1到5,^和a到f之间的字符

特殊字符

实例描述
.匹配除\n之外的任意字符,若想匹配\n,可使用原子表[.\n],也可使用参数re.S
\w匹配包括数字,字母,下划线的字符;等价于:[0-9a-zA-Z_]
\W匹配除数字,字母,下划线之外的字符;等价于:[^0-9a-zA-Z_]
\s匹配空白字符,包括空格,制表符,换页符等;等价于:[\t \n\r\v]
\S匹配非空白字符;等价于:[^\t \n\r\v]
\d匹配数字;等价于[0-9]
\D匹配非数字;等价于[^0-9]

模式

实例描述
*匹配前面的原子0次或多次;贪心匹配,可在其后加?置为非贪心匹配
+匹配前面的原子1次或多次;贪心匹配,可在其后加?置为非贪心匹配
?匹配前面的原子0次或1次
{n}匹配前面的原子n次
{n,}匹配前面的原子至少n次
{n,m}匹配前面的原子至少n次,至多m次
()原子组
a|b先匹配表达式a,若表达式a不匹配,则使用表达式b进行匹配
(?:abc)匹配abc,但不表示一个组,结果不包括此组
(?#ab)注释
(?imx:re)此组中的表达式满足imx标志;可选为i,m,x
(?-imx:re)此组中表达式不满足imx标志;可选为i,m,x
\A只有写在表达式最前才生效;从字符串头开始匹配,直到匹配成功一次或遇到换行符;re.M参数无效
^只有写在表达式最前才生效;从字符串头开始匹配,直到匹配成功一次或遇到换行符;使用re.M参数会从每行行首开始匹配
\Z**只有写在表达式末尾才生效;**匹配字符串末尾;re.M参数无效
$**只有写在表达式末尾才生效;**匹配字符串末尾;使用re.M参数会从每行行尾匹配
\b位置决定作用:在表达式最前面,则匹配每个单词开头;在表达式最后,则匹配每个单词1结尾
\B位置决定作用:在表达式最前面,则匹配每个单词开头;在表达式最后,则匹配每个单词结尾
\G匹配最后匹配完成的位置
(?Pre)匹配re,并将匹配的文本放置于名称为name的组中; r.group(‘name’)

参数

实例描述
re.I使匹配对大小写不敏感
re.M可以匹配多行;影响^$
re.S使.可以匹配\n在内的所有字符
re.X使表达式中可以使用python注释
re.L使用本地化识别(locale-aware)匹配
re.U根据Unicode字符集匹配字符;将会影响\w,\W,\b,\B

示例

反向引用

\num,代表前面第几个括号的内容

s = "<div>北京</div><body>南<<>>京</body>"
p = re.compile(r'<(.*?)>(.*?)</\1>')
r = re.findall(p,s)
print(r)
#[('div', '北京'), ('body', '南<<>>京')]
或运算|

首先匹配|前的表达式,不匹配才开始匹配后面表达式


  1. 单词是指两边是空白字符和特殊字符$#等的字符串 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值