''' 概念: 用于匹配关键字的,需要标准库re re.findall(): 查询所有 re.match(): 匹配开头,从头开始匹配 re.search(): 搜索的 ''' # findall()方法 至少两个参数,第一个是正则表达式,第二个是对象,对象是字符串 # 返回结果为 列表 import re # a = " 123eabacadaferwraabbwer+-{}%$#@we1 adrab12berwra1 a2b234ertet a bab" # res = re.findall(r'abbb',a) # print(res) # res1 = re.findall(r'^a',a) # 专门匹配以xx开头的字符串 # print(res1) # res2 = re.findall(r'ab$',a) # print(res2) # res3 = re.findall(r"a[abc1]",a) # 匹配关键字aa,ab,ac # print(res3) # res4 = re.findall(r'a[a-c]',a) # print(res4) # \d 表示以为数字[0-9] {}-重复几次 # res5 = re.findall(r'\d{3}',a) # print(res5) # res6 = re.findall(r'\d{2,3}',a) # 连续数字为2个到3个 # print(res6) # # # \D 非数字,包含空格特殊字符等 # res7 = re.findall(r'\D',a) # print(res7) # \w 匹配字母,数字,下划线 # a = "3266weuREQWywu\n&%%^&*( *&^8_ui_" # res1 = re.findall(r'\w',a) # print(res1) # res2 = re.findall(r'[a-zA-Z0-9]',a) # print(res2) # # # \W 匹配非字母,数字,下划线 # res3 = re.findall(r'\W',a) # print(res3) # .表示以为任意值,*表示0-n位前面的类型值, \d* --任意个数字 # .* --任意字符 # res4 = re.findall(r'\d*',a) # print(res4) # res5 = re.findall(r'3.*u',a) # 默认匹配为最长,贪婪模式 # print(res5) ''' 控制数量: * --匹配前一个字符0-无限次 + --匹配前一个字符1-无限次 ? --匹配前一个字符0-1次 贪婪模式:所有匹配的结果都是默认的贪婪模式,会尽可能往多了匹配 非贪婪模式:在*+?再写一个?就是非贪婪模式,会往最少的条件去匹配 ''' # a = 'idhfew12ydab33 eoac_ira\ndabb哈哈ba\ti5abbb678abbbbbbbbeab' # print(re.findall(r'ab*',a)) # 匹配前一个字符0-无限次 # print(re.findall(r'ab*?',a)) # 非贪婪模式匹配0次,都去最小值 # print(re.findall(r'ab+',a)) # 匹配前一个字符1-无限次 # print(re.findall(r'ab+?',a)) # 匹配前一个字符1次,+取最小1,?取最小0--匹配ab # print(re.findall(r'ab?',a)) # 匹配前一个字符0-1次 # print(re.findall(r'ab??',a)) # 非贪婪模式匹配0次,0+0=0 ## .*? 满足条件的最少匹配 # a = "3266weuREQWywu\n&%%^&*( *&^8_ui_" # res1 = re.findall(r'3.*?u',a) # print(res1) # (): 把括号里面的内容作为一个整体去匹配 # b = '84375dsj49837565#22.comiewur12345785@qq.com' # print(re.findall(r'(\d{6,11})@qq.com',b)) # 圆括号里面的作为一个整体去匹配括号,括号后面的是条件,匹配的结果是不包含这个匹配条件的 # print(re.findall(r'(\d{6,11}@qq.com)',b)) # 只匹配qq邮箱 # print(re.findall(r'((\d{6,11})@qq.com)',b)) # re.I --不区分大小写 # a = "324edfsf\nwErEWRETTRffdf24534t ^&*erwr*Fd8Fw2" # res1 = re.findall(r'e',a,re.I) # re.l 不区分大小写 # print(res1) # # # re.S --匹配出换行符等特殊字符,一般是无法匹配的 # res2 = re.findall(r's.*?',a,re.S) # print(res2) # res3 = re.findall(r'\s',a) # print(res3) # \b 主要用于匹配单词 # a = "my name ins hanmeimei n234e" # res = re.findall(r'n.*?e',a) # print(res) # res1 = re.findall(r'\bn.*?\b',a) # 可以匹配前后是空格的 # print(res1) # match --匹配开头,从开头开始匹配,不满足直接None a = "my name is han" # res = re.match('my',a) # print(res) # 返回一个对象 # .span() ---返回位置 .group() --提取结果 # print(res.span()) # 返回位置,包含前边,不包含结尾 # print(res.group()) # 直接显示匹配到的内容 # serch 方法 和match 一样 res = re.search('my',a) print(res) # 返回一个对象 print(res.span()) # 返回位置,包含前面,不包含后面 print(res.group()) # 直接显示匹配到的结果
python基础学习 day13---正则表达式
最新推荐文章于 2024-09-14 19:55:48 发布
本文介绍了Python中正则表达式的使用,包括`re.findall()`、`re.match()`和`re.search()`等方法。通过实例演示了如何匹配特定模式的字符串,如匹配数字、字母、特殊字符等,并讲解了贪婪模式和非贪婪模式的区别。此外,还涉及了``用于匹配单词边界的用法以及`re.I`进行不区分大小写的匹配。
摘要由CSDN通过智能技术生成