import re
# 编译
# re.compile(正则表达式) 编译正则表达式,返回正则对象
str1 = r'123'
re_obj = re.compile(r'\d{3}')
# 正则表达式对象.fullmatch(字符串)
print(re_obj.fullmatch(str1)) # <re.Match object; span=(0, 3), match='123'>
# 匹配
# fullmatch 完全匹配
'''
fullmatch(正则,字符串) 让整个字符串和正则进行匹配
match(正则,字符串) 让字符串开头和正则进行匹配
'''
print(re.fullmatch(r'\d{3}', '123')) # <re.Match object; span=(0, 3), match='123'>
print(re.match(r'\d{3}', '123asdwa'))
# 匹配对象
result = re.fullmatch(r'(\d{2})([a-z]{3})([a-z]{2})', '12assad')
print(result) # <re.Match object; span=(0, 7), match='12assad'>
# 匹配到的子串 匹配对象.group()/匹配对象.group(0)
print(result.group()) # 12assad
print(result.group(1)) # 12
print(result.group(2)) # ass
print(result.group(3)) # ad
# 匹配范围---匹配到的子串在原字符串的下标范围
# 匹配对象.span()
print(result.span()) # (0, 7) 取不到7
print(result.span(2)) # (2, 5) 取不到5
# 查找
'''
re.search(正则,字符串)
在字符串中找到第一个满足正则的子串,如果找到了就发挥匹配对象,
re.findall(正则,字符串)
获取字符串中所有满足正则的子串,返回值是列表,列表中的元素是字符串或者元组
re.finditer(正则,字符串)
获取字符串中所有满足正则的子串,返回值是迭代器,迭代器中的元素是匹配对象
'''
print(re.search(r'\d{3}','dwdawdwa5656===')) # <re.Match object; span=(8, 11), match='565'>
print(re.findall(r'a\d{3}','dwadwadwa4545351ddwa')) # ['a454']
# 有一个分组
print(re.findall(r'a(\d{3})','dawdwa213dwawdw')) # ['213']
# 有两个或者两个以上的分组
print(re.findall(r'([a-z]{2})(\d{3})','jo122nk333')) #[('jo', '122'), ('nk', '333')]
iter1=re.finditer(r'([a-z]{2})(\d{3})','da123dwdwa21345')
print(list(iter1)) # [<re.Match object; span=(0, 5), match='da123'>, <re.Match object; span=(8, 13), match='wa213'>]
# 切割 re.split(正则,字符串)--将字符串中满足正则的子串作为切割点
result=re.split(r'\d+','dwaw15wdaw1513a4354daw1354.')
print(result) # ['dwaw', 'wdaw', 'a', 'daw', '.']
# 替换 re.sub(正则,字符串1,字符串2)---将字符串2中所有的满足正则的子串替换成字符串1
result=re.sub('\d+','+','213dwa213dwa54dwad132545daw')
print(result) # +dwa+dwa+dwad+daw
从入门到入狱-------re模块
猜你喜欢
转载自blog.csdn.net/weixin_44628421/article/details/109194354
今日推荐
周排行