re模塊解讀
1.(了解)compile(正則表達式) - 創(chuàng)建正則表達式對象
2.fullmatch - 完全匹配
fullmatch(正則表達式, 字符串) - 讓正則和字符串完全匹配;匹配失敗返回None,匹配成功返回匹配對象
對整個字符串進行檢查的時候使用悴品,比如判斷賬號攻谁、密碼是否合法;手機號凌外、郵箱是否合法等
3.match - 匹配字符串開頭
match(正則表達式, 字符串) - 讓正則和字符串開頭匹配;匹配失敗返回None,匹配成功返回匹配對象
4.search - 字符串查找
search(正則表達式, 字符串) - 在字符串中找到第一個和正則表達式匹配的子串;沒有匹配到就返回None,否則返回匹配對象
result = search(r'a(\d{3})([A-Z]{2})', 'hello-a782KH--=23hjahsf')
print(result)
# 通過匹配對象能獲取到以下內(nèi)容
# a. 匹配結(jié)果
print(result.group()) # a782KH, 獲取整個正則表達式匹配到的結(jié)果
print(result.group(1)) # 782, 獲取第一個分組匹配到的結(jié)果
print(result.group(2)) # KH, 獲取第二個分組匹配到的結(jié)果
# b.匹配范圍(被匹配到的內(nèi)容在原字符串中的范圍-(開始下標(biāo),結(jié)束下標(biāo)))
print(result.span())
print(result.start())
print(result.end())
# c.獲取原字符串
print(result.string)
5. split - 字符串切割
split(正則表達式, 字符串, 切割次數(shù)) - 將字符串按照滿足正則表達式的子串進行切割;返回的是一個列表骑脱,列表中是被切開的子串
切割次數(shù) - 不傳參就全切
print(split(r'\d+|[A-Z]+', 'hsj8kkjs9999lkjaHlks92jj8js9lkKIsj90kjkj', 1))
6.sub - 字符串替換
sub(正則表達式,新字符串,原字符串, 替換次數(shù)) - 將原字符串中滿足正則表達式的子串替換成新字符串
替換次數(shù) - 不傳參就全部替換
print(sub(r'\d+', '*', 'how hj2h aeu8js90njj8899nnnnas'))
注意:使用findall的時候渴庆,如果有分組想要取整個正則匹配的結(jié)果是取不到
7. findall - 查找所有
findall(正則表達式, 字符串) - 在字符串中查找所有滿足正則表達式的子串,以列的形式返回
有一個分組纤壁,只取分組匹配到的內(nèi)容
8. finditer - 查找所有
finditer(正則表達式, 字符串) - 在字符串中查找所有滿足正則表達式的子串左刽; 返回一個迭代器,元素是每個子串對應(yīng)的匹配對象
result = finditer(r'(\d[a-z]){3}\+', 'ahjs8a2a8j+胡士大夫9m2s0j+接收到sd8p+ss===')
print(result)
for x in result:
print(x.group(), x.group(1))
def get_name():
with open('data.txt', encoding='utf-8') as f:
content = f.read()
print(content)
re_str = r'"name":"(.+?)",'
result = findall(re_str, content)
# result = re.findall(r'\d\d','ashjf89kjskdf90naskhfk899nn,nmf67jkhh56hkhjk78')
print(result)
# get_name()