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

it2024-01-10  59

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
最新回复(0)