正则表达式:导入re模块
参考链接: link.
import re
'''正则表达式模式'''
# .匹配除换行符之外的任何字符
# A|B表示匹配表达式A或者B
# ^匹配输入字符串开始位置
# [^..]取反
# $匹配输入字符串结尾位置
# w匹配任何单词字符
# W匹配任何非单词字符
# 将一个普通字符变成特殊字符例如d(非数字D);或者解除元字符特殊功能例如.
# [...]字符类,匹配所包含的任意字符,例如[1-5],[a-z]
# {M,N}M和N均为非负整数,表示匹配了M~N次,M、N可以置空
# *匹配前面的子表达式零次或者多次,等价{0,}
# +匹配前面的子表达式零次或者多次,等价{1,}
# ?匹配前面的子表达式零次或者一次,等价{0,1}
# *?,+?,??匹配模式是非贪婪模式(默认贪婪模式)
# {M,N}?启动非贪婪模式,只匹配M次
'''正则表达式修饰符'''
# re.I 是匹配对大小写不敏感
# re.L 本地化识别
# re.M 多行匹配
# re.S 使.匹配换行之内所有字符
# re.U 根据Uniconde解析字符
# re.X 更灵活的格式
a = '1234567890zabbbbcdefg*25.254.1.12!.abcd'
# re.match表达式
print(re.match('123', a)) # 起始位置匹配,不是返回None
match_ans = re.match('123', a)
print(match_ans.group()) # 返回匹配到的字符串
# re.search表达式
print(re.search(r'.', a)) # .代表任意字符
print(re.search(r'.', a)) # 消除元字符能力,赋予普通字符能力
print(re.search(r'd', a)) # 匹配数字
print(re.search(r'[aeiou]', a)) # 任意一个匹配就算成功
print(re.search(r'[b-z]', a)) # 小横杠表示范围
print(re.search(r'[0-9][4-8][6-7]', a)) # 数字范围
print(re.search(r'ab{4}c', a)) # {}重复匹配
print(re.search(r'ab{3,5}c', a)) # {}重复匹配范围
print(re.search(r'(([01]{0,1}d{0,1}d|2[0-4]d|25[0-5]).){3}([01]{0,1}d{0,1}d|2[0-4]d|25[0-5])', a))
print(re.search((r'(abc)1'), 'abcabcd'))
# re.sub检索替换
ano_a = re.sub(r'1', '(1)', a) # 正则,替换字符串,源字符串
print(ano_a)
# re.compile编译正则表达式
a_re = re.compile(r'([0-9]+)([a-z]+)')
m = a_re.match(a)
print(m)
print(type(m), m.start(), m.end(), m.span())
print(m.group(), m.group(1), m.group(2), m.groups())
# re.findall表示找到所有匹配内容并做一个结果返回,返回列表
print(re.findall(r'[a-z]+', a))
# re.split按照所能匹配到的子串将字符串切分,返回切分列表
print(re.split(r'[a-z]+', a))
print(re.split('W+', a))
# 如果加上括号,结果会同时返回去掉的值
print(re.split('(W+)', a))
# 只切分了一次
print(re.split('W+', a, 1))



