正则表达式  re
用于处理 内容比较多、比较复杂的字符串 的一种工具
在表达式中,定义一些规则 ,在大的字符串当中,来筛选出符合规则的子字符串方法
match()
尝试从字符串的起始位置匹配一个模式,匹配成功则返回的是一个匹配对象(这个对象包含了我们匹配的信息),如果不是起始位置匹配成功的话,match()返回的是空
search()
扫描整个字符串,匹配成功则返回的是一个匹配对象(这个对象包含了我们匹配的信息)
注意:search也只能匹配到一个,找到符合规则的就返回,不会一直往后找
findall()
字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
sub()
类似于replace的替换方法re.sub(正则表达式、替换成什么、要替换的字符串)
split()
切割,跟字符串split,比字符串更加的灵活
[] 表示一个字符的位贪婪和非贪婪模式
正则默认都是用贪婪模式去匹配数据的,就是尽可能多的匹配符合要求的数据
非贪婪模式下,始终找最短匹配
###### 位数  []里面的规则 匹配的位数
* 用于将前面的模式匹配0次或多次(默认是贪婪模式---> 尽可能多的匹配字符串)
+ 用于将前面的模式匹配1次或多次(默认是贪婪模式)
? 用于将前面的模式匹配0次或1次(默认是贪婪模式)
{m}  用于将前面的模式匹配 m次(默认是贪婪模式)
{m,} 用于将前面的模式匹配 m次或更多次(默认是贪婪模式)
{m,n} 用于将前面的模式匹配 m次到 n次 即最小匹配 m次,最大匹配 n次。 (默认是贪婪模式)加上问号就是非贪婪模式:
*?
+?
??
{m,}?  m次
{m,n}?  m次#### 判断开头和结尾
^ 用于匹配字符串的开头,match 自动使用这种方法
$ 于匹配字符串的末尾,(如果末尾有换行符 \n,就匹配\n前面的字符),即行尾#### 预定义字符
"."  用于匹配除换行符(\n)之外的所有字符
\w word 匹配任意数字、字母和下划线\b boundary  匹配一个单词边界,也就是指单词和空格间的位置。
\d digit 匹配任意的数字
\s space 匹配任意的空白字符  相对于 \t \n \r
\\ 表示匹配一个 \\W 非 \w
\B
\D
\S# 分组 ---> 在 规则中 使用 () 来表示一个分组
groups()  ----> 所有的组  也可以表示成group(0)
group(1) 第一个分组
"""

练习:

import remsg1 = "q1werty2uiopa3sdfgh4jklz"  # 筛选出 字符串中 的  字母+数字+字母
result = re.findall("[a-z][0-9][a-z]", msg1)
print(result)msg2 = "q1WertY2uiopA3Sdfgh4jklz"  # 筛选出 字符串中 的  字母+数字+字母
result1 = re.findall("[a-zA-Z][0-9][a-zA-Z]", msg2)
print(result1)# 需求  验证一个 QQ号
# 全是数字,不能以0开头,  5-11位
qq = "12345678901"
result2 = re.search("^[1-9][0-9]{4,10}$", qq)
print(result2)# 需求:验证一个字符串 是否符合  由数字或字母组成,但是不能以数字开头,而且 长度必须 在6位以上
username = "Admin_123"
result = re.match(r"^[a-zA-Z_]\w{5,}$", username)
print(result)# 需求  提取出 所在的 xx.py 的文件名
msg = "aa.py a*.py ab.txt bb.py cc.png ddddd.py apyb.txt a**.py"
result = re.findall(r"\w+[*]*\.py\b", msg)
print(result)# 需求: 匹配一个字符串 是否是 手机号
# 11位  第一位  1  第二位 356789 第3位往后 [0-9] 或 \d
phone_num = "16612345678"
result = re.match("^[1][356789]\d{9}$", phone_num)
print(result)# |
# 匹配数字  0-100
# 0  1 10 11 99 100  01
num = "100"
result = re.match("^[1-9]?[0-9]?$|100$", num)
print(result)# 验证邮箱   135796@qq.com  karl_go@yeah.net
# 假设 @前面的字符(字母 数字 下划线) 有5-20位
email = 'karl_go@126.com'
#
result = re.match(r"(\w{5,20})@(qq|126|163|yeah)\.(net|cn|com)$", email)
print(result)# 分组
print(result.groups())  # 显示所有的组的内容
print(result.group(0))  # .group(0) 表示符合规则的整个字符串
print(result.group(1))  # 显示第一组的内容
print(result.group(2))
print(result.group(3))# 座机号码  022-12345678   0311-1234567  400-1111111
phone_num = "022-12345678"
result = re.match(r"(\d{3,4})-(\d{7,8})$", phone_num)
print(result)
print(result.group(1), result.group(2))# 提取 html标签 里面的内容
html1 = "<html>hello</html>"
result = re.match(r"<(\w+)>(.+)</\1>$", html1)
print(result)
print(result.group(1))# 多个标签---> 提取标签名 以及 标签里面的内容
html2 = "<html><h1>hello</h1></html>"
result = re.match(r"<(\w+)><(\w+)>(.+)</\2></\1>", html2)
print(result.group(1))
print(result.group(2))
print(result.group(3))result = re.match(r"<(?P<n1>\w+)><(?P<n2>\w+)>(.+)</(?P=n2)></(?P=n1)>", html2)
print(result.groups())# 其他的函数  sub  将 数字 样式的 字符串 进行替换
msg = "java:90,Python:70,C:80"
new_str = re.sub(r"\d+", "100", msg)
print(new_str)# split()
result = re.split(r"[:,]",msg)
print(result)

Python(正则表达式)相关推荐

  1. 编程软件python下载怎么读-使用最方便的计算机编程软件,Python下载使用完美教程...

    Python是一种通用的计算机编程软件,Python对程序员来说是一个非常有用的工具,它允许你快速地编写代码,并且我们使用软件做出的代码运行速度异常快,Python还具有别的软件不具有的突出点那么就是 ...

  2. python软件下载教程-使用最方便的计算机编程软件,Python下载使用完美教程

    Python是一种通用的计算机编程软件,Python对程序员来说是一个非常有用的工具,它允许你快速地编写代码,并且我们使用软件做出的代码运行速度异常快,Python还具有别的软件不具有的突出点那么就是 ...

  3. python没基础能自学吗-没学过编程可以自学python吗

    目前在很多行业中都在越来越多的应用Python,这也是很多行业学习Python的原因. 我认为是可以的,python语法简单明了,代码可读性高,容易入门.Python的哲学是「做一件事情应该只有一种最 ...

  4. python是什么和c++是什么区别_编程c++和python的区别

    展开全部 论坛 活动 招聘 专题 打开2113CSDN APP Copyright © 1999-2020, CSDN.NET, All Rights Reserved 登录 一颗日成 关注 浅谈52 ...

  5. python可以从大到小循环嘛_无需编程基础,Python从入门到进阶大法

    原标题:无需编程基础,Python从入门到进阶大法

  6. 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础简介及入门配置

    工作将近两年了,做过B/S结构的项目,也做过android,也做过C/S结构的项目,相信无论是那种项目都是基于Java.学习运用Java也已经好多年了,虽然也接触过C/C++,C#,.NET之类的开发 ...

  7. 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python 逻辑

    条件语句 if 条件语句: if (num >= 0 and num <= 5) or (num >= 10 and num <= 15): elif 条件语句: for nu ...

  8. 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python 正则表达式

    字符 . 表示任意除了\n的字符(一个) \ 转义字符(同各种语言) [-] 字符集 表示在字符集中的一个 ,可以,如[abc]表示不在abc中,如果需要使用特殊符号需要转义.所以想学的同学,有必要听 ...

  9. 《python透明人士,他是凭什么成为主流编程的宠儿?!》python基础语法

    Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发 ...

  10. 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础

    1. 写出变量命名时的规则 1 变量名的长度不定,但是其中的字符必须是字母.数字.或者下划线(_),不能使 用空格.标点符等其他字符. 2 变量名的第一个字符不能是数字,必须是字母或下划线. 3 不能 ...

最新文章

  1. 基于Vue-cli和Vux的webpack配置
  2. java 布尔表达式_java - 布尔值,条件运算符和自动装箱
  3. Randomize select algorithm 随机选择算法
  4. 今天,Python信息量很大!
  5. centos升级glibc(升级到 2.17版)
  6. 北林oj-算法设计与分析-Simple Count(C++,思路+代码)
  7. DIY购车入门5步法则
  8. HDU 1022 Train Problem I
  9. 《健康流言终结者》一句话总结
  10. 工商企业大数据爬虫系统
  11. No serializer的解决方法
  12. 总结:伺服电机控制及结合强弱电的控制系统
  13. JavaScript lambda 表达式介绍
  14. Matlab的fprintf函数使用百分号问题
  15. 大数据毕设选题 - 机器学习餐厅销量预测(大数据 python)
  16. 离线语音芯片-开发指南
  17. Cesium本地加载地形(dem高程)数据
  18. C - Wrap very long lines of input into two or more shorter lines
  19. 海拔4000米计算机设备,普通笔记本海拔4000米以上就不灵了,西藏只能带固态硬盘笔记本!...
  20. 汽车文化-实用与实在-车身结构

热门文章

  1. Leetcode.463 岛屿的周长
  2. 司普沃浅谈甜瓜枯萎病防治技术与管理
  3. Mrtg网络监控 实现步骤
  4. 京东快递向个人开放,顺丰或最受伤
  5. 一篇文章搞清楚直播协议RTMP
  6. 网易严选上半年开设线下店?说好不学无印良品的
  7. 优雅地实现Android主流图片加载框架封装,可无侵入切换框架
  8. 实用工具推荐--GIF动图裁剪工具IIMG(免注册且免费)
  9. php交易商城项目源代码,PHP源码交易商城网站整站源码(商业运行版)
  10. 几个开源的运维管理系统介绍