一、re

1.re.match(rule,text) #必须从开头开始匹配,开头不符合就失败
2.re.search(rule,text)#从左到右遍历字符串,找到第一个符合的字符串就就返回
3.re.findall(rule,text)#在整个字符串中寻找满足条件的字符串,返回列表
4.re.sub(rule,replacetext,text)#对匹配出来的字符串人为替换,返回字符串

text='my email is 213700@gmali.com and xssheo@139.com'
rule="\s(\w+@[0-9a-z]+[.]com)"
result=re.sub(rule,'wrong',text)
print(result)

5.re.split(rule,text):按照rule分割text

text='my&email*is)213700@gmali.com and xssheo@139.com'
result=re.split('[^@\w]',text)
print(result)

6.re.compile(rule,re.VERBOSE) 编译正则表达式,能够在rule中注释

text='my email is 213700@gmail.com and xssheo@139.com'
rule="\s(\w+@[0-9a-z]+[.]com)"
# re.VERBOSE 忽略换行
r=re.compile("""\s #邮箱前的空格(\w+ #邮箱的第一部分@[0-9a-z]+ #邮箱的第二部分[.]com)""",re.VERBOSE
)
result=re.findall(r,text)
print(result)

二、单字符

re.match()
1.rule=‘.’ 从开头开始匹配任意字符除换行\n #注意[.]就是匹配字面意思上的. 不是原来的意思
.加上re.DOTALL可匹配所有的字符
2.rule=‘\d’ 匹配任意数字字符–>可替换为0-9
3.rule='\D’匹配任意非数字字符–>可替换为^0-9 ^代表非
4.\s 匹配空白字符,如\n \t \r(回到本行首) 空格
5.\w 匹配小写和大写的a-z、数字和下划线–>可替换为0-9a-zA-Z_
6.\W匹配除小写和大写的a-z、数字和下划线的所有字符–>可替换为^0-9a-zA-Z_ ^代表非
7.[rule or rule]中括号内的内容均可匹配

三、多字符

1.* 匹配0个或多个字符
2.+ 匹配1个或多个字符
3.?匹配0个或1个字符
4.{m} 指定匹配字符数
5.{m,n} 匹配m到n个字符,默认匹配最多
eg:rule=‘[0-9]’ or rule=‘[^0-9a-zA-Z_]+’
6.匹配所有字符 rule='[\d\D]
’ or rule=‘[\w\W]*’ or ‘.’+re.DOTALL
三个正则验证案例:

import re
'''
1.验证手机号
第一位:1
第二位:3456789
第三位-第十一位:0-9
'''
text1='13165123452'
rule1='1[3456789][\d]{9}'
result1=re.match(rule1,text1)
print('result1:'+result1.group())
'''
2.验证邮箱:xxx@yyy.com
xxx:数字、字母和下划线
@
yyy:数字、小写字母
.com
'''
text2='xsshejjo@163.com'
rule2='\w+@[0-9a-z]+[.]com'
result2=re.match(rule2,text2)
print('result2:'+result2.group())
'''
3.验证身份证号
前17位:0-9
第18位:0-9Xx
'''
text3='22370220040604898x'
rule3='\d{17}[0-9Xx]'
result3=re.match(rule3,text3)
print('result3:'+result3.group())

四、特殊字符

1.脱字号^
(1)中括号内表示取反 [^\d]+
(2)中括号外表示以指定字符打头 ^a[a-z]+
2.美元符号$ 表示以…为结尾
如邮箱验证中以com结尾,那么rule=‘[\w]+@[0-9a-z]+[.]com$’
3.竖线|
(1)中括号认为是单个字符[https|http|ftp|file]
(2)中括号认为是分割,表示或(https|http|ftp|file)

五、贪婪模式和非贪婪模式

1.贪婪模式:正则表达式中尽可能多地去匹配字符(默认是贪婪模式)
2.非贪婪模式:正则表达式最后添加?,尽可能少地去匹配字符,如[a-z]+?
一次获取多个值时一定要采用非贪婪模式,加?
五、转义字符
.相当于[.] 表示真的匹配一个.

text4='3...1415926'
rule4='\d\.+\d+'
result4=re.match(rule4,text4)
print('result4:'+result4.group())

六、group分组

通过添加()提取字符串

import re
text5='my email is 213700@gmali.com and xssheo@139.com'
rule="\s+(\w+@[0-9a-z]+\.com)\s+and\s+(\w+@[0-9a-z]+\.com)"
result5=re.search(rule,text5)
print('result5:'+result5.group(1))

Python正则表达式写法相关推荐

  1. (收藏)Python 10个正则表达式写法

    关于Python 10个正则表达式写法 主要是用到了 re这个库 (1).其中re.compile用于编译正则表达式,生成一个正则表达式( Pattern )对象 (2). .findall用于在字符 ...

  2. python正则匹配任意字符_Python 匹配任意字符(包括换行符)的正则表达式写法...

    Python 匹配任意字符(包括换行符)的正则表达式写法 想使用正则表达式来获取一段文本中的任意字符,写出如下匹配规则: (.*) 结果运行之后才发现,无法获得换行之后的文本.于是查了一下手册,才发现 ...

  3. Python正则表达式,看这一篇就够了

    作者 | 猪哥 来源 | 裸睡的猪(ID: IT--Pig) 大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习 Python中 ...

  4. Python正则表达式-2

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...

  5. Python正则表达式指南

    Python正则表达式指南 本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表 ...

  6. Python正则表达式指南上半部

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...

  7. Python正则表达式初识(九)

    继续分享Python正则表达式的基础知识,今天给大家分享的特殊字符是[\u4E00-\u9FA5],这个特殊字符最好能够记下来,如果记不得的话通过百度也是可以一下子查到的. 该特殊字符是固定的写法,其 ...

  8. 阅读后这篇文章后,python正则表达式完全弄懂了

    大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习 Python中关于 正则表达式的函数. re模块主要定义了9个常量.12个函 ...

  9. 初识Python正则表达式(9课连发)

    本文由屋友彭东成投稿. ======================= 第一课 首先跟大家简单唠叨两句为什么要学习正则表达式,为什么在网络爬虫的时候离不开正则表达式.正则表达式在处理字符串的时候扮演着 ...

最新文章

  1. iOS Podfile里面的use_frameworks!引发的血案
  2. linux 系统相关服务解释
  3. 为什么vs数据库中文显示问号_在vs2008中注册页面中的中文字符写入数据库的后中文会变成问号...
  4. 第八章:Java_泛型
  5. 前端编码规范之JavaScript
  6. TCP/IP 各层的作用
  7. 104种***清除方法
  8. 【Datapump】expdp和impdp中parallel参数解释
  9. Menu菜单资源Android
  10. 购物网站讨论5:会员功能的实现
  11. 《Redis开发与运维》学习第六章
  12. 如何使用idea自带的数据库可视化工具
  13. 2018最新Jrebel激活服务,Jrebel激活,Jrebel激活码,Jrebel破解
  14. Python 库 Geopy 的用法,经纬度坐标转换、经纬度距离计算
  15. 什么是模拟信号?数字信号?区别是什么?它们又是如何完成转换的?
  16. 计算机毕业设计Java“小蜜蜂”校园代取快递系统(源码+系统+mysql数据库+lw文档)
  17. 爬取抖音数据实践方案《进阶版》
  18. 【实验】阿里云大数据助理工程师认证(ACA)- 机器学习实现基本统计分析
  19. 从校招时间谈大学求职准备
  20. Celery Django 运行 task 任务的时候 提示NotRegistered

热门文章

  1. 超声波的四个特性_超声波有什么特点
  2. 如何将图片变成GIF图?一键完成gif制作
  3. 【狂飙后遗症】你磕的CP是那一对,他们的后代长什么样?
  4. HDU1864 最大报销额 01背包
  5. 多多情报通:拼多多如何取消满返活动?拼多多满返什么意思?
  6. 自行车内胎常识和选购注意事项
  7. 点线面的意义_聊聊「点线面」的概念
  8. redis实现坐标附近查询
  9. java泛型常用特点_?你必须知道的Java泛型
  10. Haxe是一门新兴的开源编程语言--Haxe学习笔记(一) Haxe:一次编码全平台编译的神话