正常模块常用使用实例
# 引入模块
import re
# 完全匹配
# 完全匹配没有必要使用正则,可以直接使用字符串方法
r1 = re.findall('abc', 'agduyjgasjaljklaabcsdc')
print(r1)
# 模糊匹配
# 通配符‘.’:代指任意一个字符(除了换行符),一个‘.’只能匹配一位。
r2 = re.findall('a.c', 'agduyjgasjaljklaabcsdc')
print(r2)
# ‘^’:以指定字符开头。
r3 = re.findall('^a.c', 'abcgduyjgasjaljklaabcsdc')
print(r3)
# ‘$’:以指定字符结尾。
r4 = re.findall('a.c$', 'agduyjgasjaljklaabcsdcabc')
print(r4)
# ‘*’:重复匹配,重复前面字符多次(包括0)
# 会取出a开头c结尾,中间是b,但是无论中间有多少b(包括0)都会被取出。
r5 = re.findall('ab*c', 'agduyjgasjacljklaabbcsdcabc')
print(r5)
# 取出a开头,c结尾,无论中间有什么有多少字符(包括0)
r6 = re.findall('a.*c', 'agduyjgasjaljklaabbcsdcabc')
print(r6)
# ‘+’:重复匹配,重复前面字符多次(最少有1个)
# 会取出a开头c结尾,中间是b,但是无论中间有多少b(包括0)都会被取出。
r7 = re.findall('ab+c', 'agduyjgasjacljklaabbcsdcabc')
print(r7)
# ‘?’:重复匹配,重复前面字符多次(0次或1次)
# 会取出a开头c结尾,中间是b,取出b(0次货1次)都会被取出。
r8 = re.findall('ab?c', 'agduyjgasjacljklaabbcsdcabc')
print(r8)
# ‘{}’重复匹配,重复前面字符多次(重复几次自己定义,可以指定范围)
# 会取出a开头c结尾,中间是b,取出b(2次)都会被取出。
r9 = re.findall('ab{2}c', 'agduyjgasjacljklaabbcsdcabc')
print(r9)
# 会取出a开头c结尾,中间是b,取出b(自己定义次数,可以指定范围)都会被取出。
r10 = re.findall('ab{0,2}c', 'agduyjgasjacljklaabbcsdcabc')
print(r10)
# 字符集‘[]’:代表范围,并取消里面元字符的功能(^\-例外)
# 会取出a开头c结尾,中间是b或d(2选1),可以指定范围)都会被取出。
r11 = re.findall('a[b,d]c', 'agduyjgasjadcljklaabbcsdcabc')
print(r11)
# [a-z]代表所有小写字母(选择1个),[1-9]代表数字范围,[A-Z]代表所有大写字母
r12 = re.findall('a[a-z]c', 'agduyjgasjadcljklaabbcsdcabc')
print(r12)
# [*]只代表‘*’,不再有元字符含义
r13 = re.findall('a[b,*]c', 'agduyjgasja*cljklaabbcsdcabc')
print(r13)
# [^]:取反,所有在[]里面的字符不会被匹配
r14 = re.findall('a[^b]c', 'agduyjgasjadcljklaabbcsdcabc')
print(r14)
# ‘\’:后面跟元字符去除元字符特殊含义,后面跟普通字符实现特殊含义。
# 后面跟元字符去除元字符特殊含义,‘*’只表示‘*’本身。
r15 = re.findall('a\*c', 'agduyjgasja*cljklaabbcsdcabc')
print(r15)
# 后面跟普通字符实现特殊含义。
# 匹配11个连续数字
r16 = re.findall('\d{11}', 'agduyjgasja*cljkla12312212411')
print(r16)
# ‘()’:分组,将‘()’作为一个整体
r17 = re.findall('(ab)+', 'agduyjgasjababcljklaabbcsdcabc')
print(r17)
# ‘|’:或关系
r18 = re.findall('(ab)|c', 'agduyjgasjababcljklaabbcsdcabc')
print(r18)
# r'':表示该字符串中的内容在python解释器中没有特殊含义,但是其正则含义仍然生效
# \b在python和正则中都有特殊含义,我们只想要在正则中的特殊含义,不想要在python解释器中的特殊含义
print(re.findall(r'I\b', 'I am abc'))
# 贪婪匹配,尽量多的匹配
r19 = re.findall('abc*', 'abcccccccc')
print(r19)
# 惰性匹配,尽量少的匹配
r20 = re.findall('abc*?', 'abcccccccc')
print(r20)