python基础学习 day13---正则表达式

本文介绍了Python中正则表达式的使用,包括`re.findall()`、`re.match()`和`re.search()`等方法。通过实例演示了如何匹配特定模式的字符串,如匹配数字、字母、特殊字符等,并讲解了贪婪模式和非贪婪模式的区别。此外,还涉及了``用于匹配单词边界的用法以及`re.I`进行不区分大小写的匹配。
摘要由CSDN通过智能技术生成
'''
概念:
   用于匹配关键字的,需要标准库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())  # 直接显示匹配到的结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值