2-3-04-11 内置模块-re模块

1. findall

获取匹配到的所有数据

import re

text = "dsf130429191912015219k13042919591219521Xkk"
data_list = re.findall("(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)", text)
print(data_list) # [('130429', '1919', '12', '01', '521', '9'), ('130429', '1959', '12', '19', '521', 'X')]

2. match

从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None

import re

text = "大小逗2B最逗3B欢乐"
data = re.match("逗\dB", text)
print(data) # None
import re

text = "逗2B最逗3B欢乐"
data = re.match("逗\dB", text)
if data:
    content = data.group() # "逗2B"
    print(content)

3. search

浏览整个字符串去匹配第一个,未匹配成功返回None

import re

text = "大小逗2B最逗3B欢乐"
data = re.search("逗\dB", text)
if data:
    print(data.group())  # "逗2B"

4. sub

替换匹配成功的位置

import re

text = "逗2B最逗3B欢乐"
data = re.sub("\dB", "沙雕", text)
print(data) # 逗沙雕最逗沙雕欢乐
import re

text = "逗2B最逗3B欢乐"

# 1 表示:从左到右第几个替换
data = re.sub("\dB", "沙雕", text, 1)
print(data) # 逗沙雕最逗3B欢乐

5. split

根据匹配成功的位置分割

import re

text = "逗2B最逗3B欢乐"
data = re.split("\dB", text)
print(data) # ['逗', '最逗', '欢乐']
import re

text = "逗2B最逗3B欢乐"
data = re.split("\dB", text, 1)
print(data) # ['逗', '最逗3B欢乐']

6. finditer

import re

text = "逗2B最逗3B欢乐"

# finditer 每次使用一次取一次
data = re.finditer("\dB", text)
for item in data:
    print(item.group())
import re

text = "逗2B最逗3B欢乐"

# ?P<xx>  命名分组
data = re.finditer("(?P<xx>\dB)", text) 
for item in data:
    print(item.groupdict())
text = "dsf130429191912015219k13042919591219521Xkk"
data_list = re.finditer("\d{6}(?P<year>\d{4})(?P<month>\d{2})(?P<day>\d{2})\d{3}[\d|X]", text)
for item in data_list:
    info_dict = item.groupdict()
    print(info_dict)

image

posted @ 2022-10-26 23:31  布丁家的苏苏  Views(5)  Comments(0)    收藏  举报