从入门到入狱-------re模块

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


猜你喜欢

转载自blog.csdn.net/weixin_44628421/article/details/109194354