python中re.arch()函数的⽤法
说到使⽤正则匹配字符串,就不得不说三个常⽤的匹配检索⽅法:re.arch(),re.match()和re.findall()。
大鱼海棠语录主要的区别是前两个⽅法只在⽬标字符串中匹配⼀次满⾜条件的正则表达式;⽽re.findall()⽅法匹配⽬标字符串中所有满⾜条件的正则表达式;另外re.match()只会匹配⽬标字符串开头是否满⾜正则表达式,若开头不满⾜则匹配失败,函数返回None;⽽re.arch()则不限位置。
⾄于具体的细节,请参考:
我这⾥想说的是re.arch()⽅法的⼀些具体⽤法,直接上例⼦:
import re
text ="⽣于杭州市余杭区,成长经历地杭州市余杭区,居住较长的地区杭州市余杭区69年,⽆疫区居住史,⽆冶游史,有饮酒习惯,酒类:⽩酒,每天500-60 0ml,已饮30年,未戒。,有吸烟习惯,种类:纸烟,每天20-30⽀,已吸30年,已戒6年。,否认毒物及放射性物质接触史。既往在矿场⼯作。"
pattern = r'(有吸烟习惯)[,,]种类[::]纸烟[,,](每[天⽇周⽉]\d{1,2}-\d{1,2}[⽀根])[,,]已吸(\d{1,2}年)[,,](已戒)(\d{1,2}年)。'
图画大全result = re.arch(pattern, text)
print(result)
print(type(result))
储备资金print(result[1])
print(type(result[1]))
print(result[2])
print(result[3])
print(result[4])
print(result[5])
up())
print(up()))
橱柜材质ups())
print(ups()))
up(1))
print(up(1)))
up(2))
up(3))
up(4))
up(5))
先简单说⼀下相关代码的意义:
text是⽬标字段;pattern是正则表达式,其中使⽤⼩括号“()”的作⽤在这⾥是捕获分组的意思,也就是在正则匹配的时候,将⼩括号中匹配到的⽂本编号并存储到内存中以供后续使⽤;中括号“[]”中的内容表⽰或的关系,⽐如“[,,]”就表⽰匹配⼀个汉语逗号“,”或者英⽂逗号“,”;"\d{1,2}"表⽰匹配⾄少⼀位⾄
多两位数字,也就是匹配⼀位或者两位数字;group()⽅法是⽤来获得相应的分组结果的,其
中“.group()”和“.group(0)”是完全⼀样的。历史八下思维导图
上述代码执⾏的结果是:
<_sre.SRE_Match object; span=(84,116), match='有吸烟习惯,种类:纸烟,每天20-30⽀,已吸30年,已戒6年。'>
<class'_sre.SRE_Match'>
时尚头像有吸烟习惯
<class'str'>
每天20-30⽀
30年
已戒
6年
有吸烟习惯,种类:纸烟,每天20-30⽀,已吸30年,已戒6年。
西方文化的特点<class'str'>
('有吸烟习惯','每天20-30⽀','30年','已戒','6年')新高考时间
<class'tuple'>
有吸烟习惯
<class'str'>
每天20-30⽀
30年
已戒
6年
笔者发现了⽐较有意思的点,就是“result[1]”和"up(1)“的属性和值是完全⼀样的,也就是说就
算你不使⽤group()⽅法进⾏分组,⼀旦你使⽤re.arch(),其内部是已经分好了组的,可以通过"result[i]”(其中i是组号)直接获取对应组的值,这⼀点还是⽐较⽅便的。