正则表达式re模块

import re

# 正则表达式中的元字符:

# “.” 点通配符表示可以替换表达式中的任意字符,只能代指一个字符,除换行符外
print(re.findall("a..", "hdhgaqwe"))

# “^”只从开始匹配
print(re.findall("^a..", "ahdhgaqwe"))

# “$” 只从结尾匹配
print(re.findall("a..$", "ahdhgawe"))

# “*” 重复匹配【0-无穷】
print(re.findall("a*bc", "ahdhgaabcqwbce"))

# “+” 重复匹配【1-无穷】
print(re.findall("a+bc", "ahdhgaabcqwbce"))

# “?”匹配0个或一个字符
print(re.findall("a?b", "ahdhgaabcqwbce"))

# “{}” 表示重复多少次字符
print(re.findall("a{2}b", "ahdhgaabcqwbce"))
print(re.findall("a{1,3}b", "ahdhgaaabcqwbce"))

# “[]” 字符集,表示满足字符集中任意一个字符都可以,不可以满足多个字符,还可以取消元字符的特殊意义但这些不取消(| ^ -),^放在字符集中是取反的意思
print(re.findall("[a-z,0-9]b", "ahdhgaabcqw12ebc1be"))

# “\” 反斜杠后边跟元字符去除特殊功能,反斜杠后边跟普通字符实现特殊功能
# '\A'    只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的
# '\Z'    匹配字符结尾,同$
# '\d'    匹配数字0-9
# '\D'    匹配非数字
# '\w'    匹配[A-Za-z0-9]
# '\W'    匹配非[A-Za-z0-9]
# 's'     匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 '\t'
print(re.findall("b\*", "ahdhgaab*cqwbce"))
print(re.findall("b\d", "ahdhgaab*cqwb12ce"))


# “()” 分组,匹配一组数据,把括号里面的内容当一组使用
print(re.search("(ab)+", "ahdhgababcqwabbce").group())
# findall优先取组中的内容:['baidu']
print(re.findall("www.(\w+).com", "www.baidu.com"))
# ?:可以取消优先组的内容展示全部内容
print(re.findall("www.(?:\w+).com", "www.baidu.com"))

# “|”管道符,或的意思,匹配前一组或后一组
print(re.search("Ab| ab", "Abahdhgabcqwbbce").group())

# ?P<name> 名称的固定格式,可以根据名称取具体值
ret = re.search("(?P<name>[a-z]{3})(?P<age>[0-9]{2})", "1a2aabc123")
print(ret.group())
print(ret.group("name"))
print(ret.group("age"))


# 正则表达式中常用的方法
# findall 全匹配,只要字符串中匹配出来的都在列表中展示
print(re.findall("a..b", "ashbshhaccbd"))
# finditer 把匹配出来的数据做成迭代器,可以通过next取取值
ret = re.finditer("\d", "abcgg6782j8")
print(next(ret).group())

# search匹配出一个后保存到对象中,可以通过group调用获取具体值
print(re.search("a..b", "ashbshhaccbd").group())

# match中从开始位置匹配字符串,也保存为对象,可以通过group调用获取具体值
print(re.match("a..b", "ashbshhaccbd").group())

# split以匹配到的字符进行分组
print(re.split("[h,c]", "ashbshaccbd"))

# sub把匹配到的字符进行替换
print(re.sub("h.", "vvvv", "ashbshaccbd"))
print(re.sub("h.", "vvvv", "ashbshaccbd", 1))
# 会告诉替换了的次数
print(re.subn("h.", "vvvv", "ashbshaccbd"))


# compile把正则条件编译成对象,后续可以直接调用
mat = re.compile("a..")
print(mat.findall("ashbshaccbd"))

 

posted @ 2024-11-12 16:45  GDquicksand  阅读(1)  评论(0编辑  收藏  举报