Python 正则表达式:初级进阶

1. match和search的区别

match()函数只检测字符串开头位置是否匹配,匹配成功才会返回结果,否则返回None
search()函数会在整个字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。
    所以,他们之间的最大的区别就是match是从头开始匹配,search不要求从头匹配,可以是从中间匹配,不过他们都是只要匹配到就返回

re.match(正则表达式,目标字符串)
re.search(正则表达式,目标字符串)
2. findall的用法

而findall()函数则是返回所有匹配到的字符串,返回的格式是一个列表,如果没有匹配就是返回一个空列表。

re.findall(正则表达式,目标字符串)
3. sub的用法

首先,sub的使用方法的格式和前面的三个方法不同,为

re.sub(正则表达式,替换后的字符,待替换的字符串)

意思就是将待替换的字符串中符合正则表达式的字符串替换成第二个参数的值

4. compile的用法
p = re.compile(正则表达式)
p.findall(目标字符串)

作用就是编译一句正则表达式,然后保存正则格式。
可以发现好像没啥卵用,但是这样先预编译的好处就是可以提高效率,当执行正则语句时每次都要执行编译操作,当操作的次数非常大时,效率很低,如果编译好了放在内存里,下次直接调用就可以,会快很多。

5. r的用法

r的意思是原始字符串,英文为(raw string),所有的字符串都是按照字面上的意思来使用,不带有高级语言的特性,是没有转义字符和不能打印的字符的。
当然使用的时候为什么要带上r,就是因为它可以帮助我们忽略转义字符带来的麻烦,目标字符串中有几个"\",我们就带上几个"\"就可以了。
windows的文件目录里也有\,如果直接引用地址绝对会报错或者出问题,但是用r原串就可以了,类似这样:

r"C:\Program Files"
6.贪婪以及非贪婪的用法

Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪则相反,总是尝试匹配尽可能少的字符。在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪。
贪婪模式下字符串查找会直接走到字符串结尾去匹配,如果不相等就向前寻找,这一过程称为回溯。

7."()"的用法

在findall里面,如果在正则表达式里出现了一部分字符串用()包起来,那如果匹配成功,只会返回括号里面你的内容,而不会返回全部匹配的字符串了。相当于将括号里的值存起来了

rs = re.findall("a(b)c","abc")

上式只会返回[“b”]
而如果在括号的开头加上了"?:"

rs = re.findall("a(?:b)c","abc")

则表示括号中的字符串匹配到后不进行存储,也就相当于没有括号了,会返回[“abc”]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值