江苏国龙翔建设网站,信阳市住房和城乡建设局网站,北京seo执行,有谁做彩票网站吗个人主页#xff1a;Lei宝啊
愿所有美好如期而遇 概念#xff1a;
正则表达式(regular expression)描述了一种字符串匹配的模式#xff08;pattern#xff09;#xff0c;正则匹配是一个模糊的匹配(不是精确匹配)
如下四个方法经常使用#xff1a;
match()search()f…
个人主页Lei宝啊
愿所有美好如期而遇 概念
正则表达式(regular expression)描述了一种字符串匹配的模式pattern正则匹配是一个模糊的匹配(不是精确匹配)
如下四个方法经常使用
match()search()findall()finditer()
匹配单个字符或数字
匹配说明.匹配除换行符以外的任意字符当flags被设置为re.S时可以匹配包含换行符以内的所有字符[]里面是字符集合匹配[]里任意一个字符[0123456789]匹配任意一个数字字符[0-9]匹配任意一个数字字符[a-z]匹配任意一个小写英文字母字符[A-Z]匹配任意一个大写英文字母字符[A-Za-z]匹配任意一个英文字母字符[A-Za-z0-9]匹配任意一个数字或英文字母字符[^lucky][]里的^称为脱字符表示非匹配不在[]内的任意一个字符^[lucky]以[]中内的某一个字符作为开头\d匹配任意一个数字字符相当于[0-9]\D匹配任意一个非数字字符相当于[^0-9]\w匹配字母、下划线、数字中的任意一个字符相当于[0-9A-Za-z_]\W匹配非字母、下划线、数字中的任意一个字符相当于[^0-9A-Za-z_]\s匹配空白符(空格、换页、换行、回车、制表)相当于[ \f\n\r\t]\S匹配非空白符(空格、换页、换行、回车、制表)相当于[^ \f\n\r\t]
匹配锚字符
锚字符:用来判定是否按照规定开始或者结尾
匹配说明^行首匹配和[]里的^不是一个意思$行尾匹配\A匹配字符串的开始和^的区别是\A只匹配整个字符串的开头即使在re.M模式下也不会匹配其他行的行首\Z匹配字符串的结尾和$的区别是\Z只匹配整个字符串的结尾即使在re.M模式下也不会匹配其他行的行尾
限定符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。
有 * 或 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。
匹配说明(xyz)匹配括号内的xyz作为一个整体去匹配 一个单元 子存储x?匹配0个或者1个x非贪婪匹配x*匹配0个或任意多个xx匹配至少一个xx{n}确定匹配n个xn是非负数x{n,}至少匹配n个xx{n,m}匹配至少n个最多m个xx|y|表示或的意思匹配x或y
re模块中常用函数
通用flags修正符
值说明re.I是匹配对大小写不敏感re.M多行匹配影响到^和$re.S使.匹配包括换行符在内的所有字符
通用函数 获取匹配结果 使用group()方法 获取到匹配的值 groups() 返回一个包含所有小组字符串的元组(也就是自存储的值)从 1 到 所含的小组号。
match()函数 原型 def match(pattern, string, flags0) 功能 匹配成功返回 匹配的对象 匹配失败 返回 None 获取匹配结果 使用group()方法 获取到匹配的值 groups() 返回一个包含所有小组字符串的元组从 1 到 所含的小组号。 注意从第一位开始匹配 只匹配一次 参数 参数说明pattern匹配的正则表达式(一种字符串的模式)string要匹配的字符串flags标识位用于控制正则表达式的匹配方式
举例说明
import restr1 124jfda\n
str2 \n124jfdaprint(re.match(.,str1))
print(re.match(.,str2))
print(re.match(.,str2,re.S)) search()函数 原型 def search(pattern, string, flags0) 功能 扫描整个字符串string并返回第一个pattern模式成功的匹配 匹配失败 返回 None 参数 参数说明pattern匹配的正则表达式(一种字符串的模式)string要匹配的字符串flags标识位用于控制正则表达式的匹配方式 注意 只要字符串包含就可以 只匹配一次 示例 str1 124jfda\n
str2 \n124jfdaprint(re.search(.,str1))
print(re.search(.,str2))
print(re.search(.,str2,re.S)) 注意 与search的区别 相同点 都只匹配一次 不同点 search是在要匹配的字符串中 包含正则表达式的内容就可以match 必须第一位就开始匹配 否则匹配失败 findall()函数返回列表 原型 def findall(pattern, string, flags0) 功能 扫描整个字符串string并返回所有匹配的pattern模式结果的字符串列表 参数 参数说明pattern匹配的正则表达式(一种字符串的模式)string要匹配的字符串flags标识位用于控制正则表达式的匹配方式 举例
import restr 13678324489
print(re.findall([14],str))
print(re.findall(1[0-9],str))
print(re.findall(1[0-9]{10}$,str))
print(re.findall(1[0-9]{9}$,str)) 贪婪与非贪婪模式
贪婪 .*
非贪婪 .*?
str b加粗/bb加粗的/bb加粗的的/b
val1 re.search(b.*/b,str) #贪婪
val2 re.search(b.*?/b,str) #非贪婪print(val1.group())
print(val2.group()) myStr
a hrefhttp://www.baidu.com百度/a
A hrefhttp://www.taobao.com淘宝/A
a hrefhttp://www.id97.com电
影网站/a
i我是倾斜1/i
i我是倾斜2/i
em我是倾斜2/em
#提取网址和名字
lt re.findall(a href(.*?)(.*?)/a,myStr,re.S|re.I)
print(lt) finditer()函数 原型 def finditer(pattern, string, flags0) 功能 与findall()类似返回一个迭代器 参数 参数说明pattern匹配的正则表达式(一种字符串的模式)string要匹配的字符串flags标识位用于控制正则表达式的匹配方式 举例
import reret re.finditer(\d, 12456789)
print(ret)
print(next(ret))for i in ret:print(i) split()函数返回值为列表 作用切割字符串 原型 def split(patter, string, maxsplit0, flags0) 参数 pattern 正则表达式 string 要拆分的字符串 maxsplit 最大拆分次数 默认拆分全部 flags 修正符
示例
import remyStr asdas\rda\ts12d\n*a3sda_1sd
#通过特殊字符 对其进行拆分 成列表#非字母拆分
res re.split([^a-z],myStr)
print(res)res re.split(\W,myStr)
print(res)正则高级
分组起名称 概念 处理简单的判断是否匹配之外正则表达式还有提取子串的功能用()表示的就是要提取的分组 说明 正则表达式中定义了组就可以在Match对象上用group()方法提取出子串来group(0)永远是原始字符串group(1)、group(2)……表示第1、2、……个子串
示例
import res 3G4HFD567#格式?P别名 ()里内容表示要提取的分组
x re.match((?Pvalue\d),s)
print(x.group(0))
print(x.group(value)) 编译 概念 当在python中使用正则表达式时re模块会做两件事一件是编译正则表达式如果表达式的字符串本身不合法会报错。另一件是用编译好的正则表达式提取匹配字符串 编译优点 如果一个正则表达式要使用几千遍每一次都会编译出于效率的考虑进行正则表达式的编译就不需要每次都编译了节省了编译的时间从而提升效率 compile()函数 原型 def compile(pattern, flags0) 作用 将pattern模式编译成正则对象 参数 参数说明pattern匹配的正则表达式(一种字符串的模式)flags标识位用于控制正则表达式的匹配方式 flags 值说明re.I是匹配对大小写不敏感re.M多行匹配影响到^和$re.S使.匹配包括换行符在内的所有字符 返回值 编译好的正则对象
示例
import restr 123456
pattern re.compile(\d)
print(pattern.search(str))