Python正则表达式_常用匹配方法findall

正则匹配方法之findall

核心要点: findall()是将所有匹配到的字符,以列表的形式返回。
如果未匹配,则返回空列表。
一、pattern.findall()方法
语法: findall(string=None, pos=0, endpos=9223372036854775807, *, source=None)
函数作用:
在string[pos,endpos]区间从pos下标开始查找所有满足pattern的子串,直到endpos位置结束,并以列表的形式返回查找的结果,如果未找到则返回一个空列表。
参数说明:
**string:**被匹配的字符串
pos: 匹配的起始位置,可选,默认为0
endpos: 匹配的结束位置,可选,默认为len(string)。也就是说如果不指定pos和endpos的话,该方法会在整个字符串中查找满足条件的子串。

import re 
# 1、正则表达式中无分组
# 查找到正则表达式匹配的前10个字符中的所有数字
pattern=re.compile(r'\d+')
match=pattern.findall('o89ne1two2three3four4',0,10)
print (match)  #返回['89','1','2']

# 2、正则表达式中有1个分组
#查找字符串中所有的数字子串
import re
aa='erd12343.jl34d545fd789'
pattern=re.compile(r'.*?(\d+).*?')
result=pattern.findall(aa)
print (result)   # 返回 ['12343', '34', '545', '789']

# 3、正则表达式中有多个分组
# 提取字符串中所有域名地址
import re
add = 'https://www.net.com.edu//action=?asdfsd and other https://www.baidu.com//a=b'
pattern=re.compile(r'((w{3}\.)(\w+\.)+(com|edu|cn|net))')
result = pattern.findall(add)
print (result)   #返回 [('www.net.com.edu', 'www.', 'com.', 'edu'), ('www.baidu.com', 'www.', 'baidu.', 'com')]

总结如下:
A、无分组时,将所有匹配到的字符,以列表的形式返回
B、正则表达式中只有1个分组(即圆括号)时,返回的列表元素由所有成功匹配表达式中分组内容组成。
C、当正则表达式中含有多个分组时,返回列表中的元素由所有满足匹配的内容组成,但是每个元素都是由表达式中分组内容组成的元组。
二、re.findall()方法
语法: findall(pattern, string, flags=0)
函数作用: 获取字符串中所有能匹配的字符串,并以列表的形式返回。

参数说明:
pattern: 匹配的正则表达式
string: 被匹配的字符串
flags: 标志位,用于控制正则表达式的匹配方式,如是否区分大小写,是否匹配多行等
与pattern.findall()的区别:
不能指定匹配的区间pos和endpos

# 这里只举一个简单的例子,其他的与pattern.findall()原理一样
import re
res = re.findall(r'\w+', 'I am a boy!')
print  (res)   # 返回 ['I', 'am', 'a', 'boy']
  • 11
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值