• search()方法:只要有匹配的后面就不会继续进行检索,找到一个匹配就会停止。
msg = ‘abcd7vikfd8hdfoo’result = re.search(‘[a-z][0-9][a-z]’, msg)  # 正则表达式中的字符串都是当做一个整体的,即[a-z][0-9][a-z]需当做一个整体,匹配字符串中“英文-数字-英文”的格式。
print(result.group()) # group()方法:得到匹配到的结果。search方法的返回值不是一个字符串# 输出结果:d7y
  • findall()方法:匹配整个字符串,找到一个继续向下找一直到字符串结尾。
msg = ‘abcd7vikfd8hdfoo’re.findall('[a-z][0-9][a-z]', msg)
print(result.group())# 输出结果:['d7v', 'd8h']
  • '+':用于将前面的模式匹配1次或多次(贪婪模式)。即如果放在某模式的后面,则该模式在要匹配的字符串中有多少就匹配多少
msg = 'a789bb333cdef9q'result = re.findall('[a-z][0-9]+[a-z]', msg) # ’+‘放在了模式[0-9]后面,则该字符串中的该模式,有多少匹配多少
print(result)# 输出结果:['a789b','b333c','f9q']
  • {m}:匹配前一个字符m次;{m,}:匹配前一个字符>=m次;{m,n}:匹配前一个字符m-n次,即只要前一个字符类型的个数在m-n之内,就匹配。
# qq号码验证:5-11位,开头不能是0
qq = 12798982result = re.match('[1-9][0-9]{4,10}','qq') # [1-9]表示第一位字符必须不能为0,[0-9]{4-10}表示,[0-9]这个模式的的字符数量在4-10个之内都可以被匹配
print(result.group())# 输出结果:12798982

- '^':从字符串开头开始匹配;
- '$':匹配至字符串结尾

qq1 = 1871056336666
qq2 = 20150602result1 = re.match('^[1-9][0-9]{4,10}$') # 因为match方法其实就是从开头匹配的,所以如果在match方法内,也可以不用^
result2 = re,match('^[1-9][0-9]{4,10}$')print(result1)
print(result2.group())"""
输出结果:
result1:None。匹配到该字符串尾,该字符串大于11位,所以返回为None
result2:20150602。匹配到该字符串结尾,该第一位是2,在1-9之内,后面的7个数字,在{4-10}之内,且都在[0-9]之内,所以可以匹配成功
"""
  • '\w':匹配任意字母数字及下划线,等价于[a-zA-Z0-9_];\W:匹配任意非字母数字及下划线,等价于[^\w];^在正则表达式里面是非的意思
 username = 'admin001'result = re.search([a-z][A-Z]\w{5,}$) # 其实\w相当于[a-zA-Z0-9_] $表示匹配到边界print(result)# 输出:['admin001']
  • '\b':匹配一个单词边界,也就是指单词和空格间的位置。例如:'py\b'可以匹配"python"中的’py’,但不能匹配openpyxl中的‘py’
# 要求匹配.py文件
msg = 'aa.py ab.txt bb.py kk.png uu.py apyb.txt'
result = re.findall('py\b', msg) # 因为在字符串中'\b'也有含义,所以在正则表达式里这样写肯定匹配的意思不是匹配边界的意思
print(result)# 输出:
[]
  • 1、优化1:在\b前再加一个\将\b的转义意思去掉
msg = 'aa.py ab.txt bb.py kk.png uu.py apyb.txt'
result = re.findall('py\\b', msg) # 需要加一个\将字符串中的\b转义为正常字符
print(result)# 输出:
['py', 'py', 'py']
  • 2、优化2:直接在正则表达式前面加r,去掉表达式字符中所有的转义字符
msg = 'aa.py ab.txt bb.py kk.png uu.py apyb.txt'
result = re.findall(r'py\b', msg)
print(result)# 输出:
['py', 'py', 'py']
  • '.':匹配除换行符\n外的任意字符

栗子:已知一串文件名,匹配后缀为.py的文件名

msg = 'aa.py ab.txt bb.py kk.png uu.py apyb.txt'
# \w代表任意字母数字或下划线
# +代表匹多次且必须一次以上,即>=1(所以此处不能用*,*是匹配0次或多次即>=0,即0次也能匹配,即没有字母也能匹配,匹配到的是.py)
# '.'字符在正则里面是匹配除换行符\n之外的任意字符,它可以匹配'.'字符,但也能匹配其他全部字符,所以在正则的字符串中要用'.'的本来含义,必须通过\进行转义,使他在正则表达式中仅仅只是匹配'.'。
# \b是指匹配到字符串边界
result = re.findall(r'\w+\.py\b', msg)
print(result)# 输出;
['bb.py', 'bb.py', 'uu.py']
  • '?':量词:表示匹配0次或1次。
# 匹配数字 0-100数字
n = '09'
result = re.match('[1-9]?\d', n) # 第一个字符[1-9]?,即表示出现1-9其中一个字符0次或1次都是可以匹配到的。
print(result)# 输出:
['0']
# 因为第一个字符0没有在[1-9]之内,即出现了0次,所以依次往后匹配。第二个字符\d就匹配到了字符串n的第一个字符'0',所以最后输出为0
  • '|':指在两个或多个项之间进行选择。相当于或。
# 验证输入的邮箱 163 126 qq
email = '1783787843@qq.com'
# (163|126|qq):匹配163或者126或者qq
# (com|cn):匹配com或者cn
result = re.match(r'\w{5,20}@(163|126|qq)\.(com|cn)', email)
print(result)
# 输出:1783787843@qq.com
  • (word | word | word):小括号括起来是指单词整体。eg:(163|126|qq):匹配163或者126或者qq
  • [word | word | word]:中括号括起来的是指一个字符而不是一个单词。eg:(163|126|qq):匹配163中的一个字符或者126中的一个字符或者qq中的一个字符

Python 正则表达式-基础操作相关推荐

  1. python正则匹配找到所有的浮点数_Python随笔17:Python正则表达式基础(4):贪婪匹配和最小匹配...

    Python正则表达式 贪婪匹配/最小匹配 Re库默认采用贪婪匹配,即匹配最长的子字符串.在量词后面加一个"?",即可由贪婪匹配化为最小匹配. '*'用于将前面的模式匹配0次或多次 ...

  2. Python语音基础操作--4.3共振峰估计

    <语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...

  3. Python语音基础操作--11.2基于GMM的说话人识别模型

    <语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...

  4. Python语音基础操作--6.3ADPCM编码

    <语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...

  5. Python语音基础操作--2.3声强与响度

    <语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...

  6. Python语音基础操作--10.2隐马尔科夫模型的孤立字识别

    <语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...

  7. 一次性掌握所有 Python 画图基础操作

    pythonpythonpython 画图介绍 嘿!彩蛋!感觉有帮助就三连呗! 本文以实用为第一目标,保证读者在看完此文之后可以迅速上手 pythonpythonpython 画图,掌握所有画图的基本 ...

  8. Python语音基础操作--5.1自适应滤波

    <语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...

  9. Python语音基础操作--10.1基于动态时间规整(DTW)的孤立字语音识别试验

    <语音信号处理试验教程>(梁瑞宇等)的代码主要是Matlab实现的,现在Python比较热门,所以把这个项目大部分内容写成了Python实现,大部分是手动写的.使用CSDN博客查看帮助文件 ...

最新文章

  1. PTA混淆总结(就做个笔记储存一下)
  2. python中for循环缩进_Python减少循环层次和缩进的技巧分析
  3. VB动态添加WebBrowser控件,并拦截弹出窗口(不用引用任何组件)
  4. 深入分析几种PHP获取客户端IP的情况
  5. python云计算面试题_云计算工程师面试问题及答案解析
  6. 《新版阿里巴巴Java开发手册》提到的三目运算符的空指针问题到底是个怎么回事?
  7. Hibernate-面试题
  8. [转] 春晚诗朗诵《心里话》之程序员版!!
  9. ZXing拍码后区分扫描到的是一维码、二维码、其他码,android音视频面试
  10. openssl生成自签名证书流程
  11. 关于微信小程序自定义交易组件升级处理的相关问题,及解决思路
  12. Sin City --《罪恶之城》
  13. BGP比较基础的实验
  14. python+vue+elementui在线打印系统
  15. 漂浮式半潜风机(一)稳性分析
  16. Oracle Database 12c Security - 6. Real Application Security
  17. 科普文——拉卡拉支付是什么?
  18. 解决WP Super Cache和WPtouch冲突
  19. pandas基础学习笔记(简略版)
  20. 2.MySQL表的增删改查(进阶)

热门文章

  1. linux php没有启动,php报错开启_Linux开启PHP报错的方法
  2. C# DirectX
  3. iTunes connect修改主要语言
  4. js定时器,将当前系统的时间渲染到网页(每隔一秒钟,重新获取一次时间,拼接渲染到网页)
  5. 实用的PPT添加注释小技巧(自己能看到而别人不能)
  6. 数据在网络中的发送和接收过程--简略版(TCP/IP五层结构)
  7. 天猫淘宝赔付项目说的那么暴力是真的吗?
  8. 简单易学的强肾健体保健法
  9. 荣耀10适配鸿蒙,荣耀机型也将适配鸿蒙OS!新一代旗舰荣耀50外观意外偷跑
  10. 华理c语言设计网上作业,2011华理《c语言实验报告》.docx