'''
python中re正则模块
实现一个编译查找,一般在日志处理或者文件处理时用的比较多
正则表达式主要用于模式匹配和替换工作。
预定义字符集匹配:
\d:数字0-9
\D:非数字
\s:空白字符
\n:换行符
\r:回车符
re模块数量词匹配:
符号^:表示的匹配字符以什么开头符号
$:表示的匹配字符以什么结尾
符号*:匹配*前面的字符0次或n次
eg: ab*能匹配a匹配ab 匹配abb符号
+:匹配+前面的字符1次或n次
符号?:匹配?前面的字符0次或1次
符号{m}:匹配前一个字符m次
符号{m, n}:匹配前一个字符m到n次(包括n次),m或n可以省略,mn都是正整数'
'''
import re
# 1.match函数....从第一个字符开始匹配,如果第一个字符不是要匹配的类型、则匹配失败并报错
str1 = re.match('^2\D{1,3}$', '2#khhfhgssgfgfdfs4353kjhhj') # 报错﹑结尾1-5个非数字结尾
str2 = re.match('^2\D{1,3}$', '2hhj')
# print(str1.group()) #通过group 函数把结果显示出来
print(str2.group())
# 2.search函数....从第一个字符开始查找、一找到就返回第一个字符串,找到就不往下找,找不到则报错
str_serach1 = re.search('\d+', '239khhfhgssgfgfdfs4353kjhhj') # 可以穿透一次,从第二次开始匹配―239
str_serach2 = re.search('\d*', 'a239khhfhgssgfgfdfs4353kjhhj') # 为空︰0次开始
print(str_serach2.group())
print(str_serach1.group())
# 3.findall函数 从第一个字符开始查找,找到全部相关匹配为止,找不到返回一个列表[]
str1 = re.findall('\d', '239khhfhgssgfgfdfs4353kjhhj') # ['2', '3', '9', '4', '3', '5', '3']
str1 = re.findall('\d+', 'a239khhfhgssgfgfdfs4353kjhhj') # ['239', '4353']
str1 = re.findall('\D+', 'a239khhfhgssgfgfdfs4353kjhhj') # ['a', 'khhfhgssgfgfdfs', 'kjhhj']
str1 = re.findall('error', 'aerrorkhhfhgssgerrorfs4353kjhhj') # ['error', 'error']
str1 = re.findall('error', 'a239khhfhgssgfgfdfs4353kjhhj') # []
str1 = re.findall('dcs()dcs',
'dcs239khhfhgssgfgfdfs4353kjhhjdcs') # [] dcs()dcs中的括号不会匹配前后的内容,只会匹配括号里面的内容 注意:碰到小括号只会匹配小括号里面的内容
str1 = re.findall('dcs(.+)dcs',
'dcs239khhfhgssgfgfdfs4353kjhhjdcs') # .+匹配任意字符 是0次n次 ,dcs之间所有内容 ['239khhfhgssgfgfdfs4353kjhhj']
print(str1)
# 4.compile函数 编译模式生成对象,找到全部相关匹配为止,找不到返回一个列表[]
str1 = re.compile('error')
str2 = str1.findall('aerrorkhhfhgssgerrorfs4353kjhhj')
print(str2) # ['error', 'error']
python 正则
最新推荐文章于 2024-09-11 09:36:36 发布