Python(正则表达式)
正则表达式 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(正则表达式)相关推荐
- 编程软件python下载怎么读-使用最方便的计算机编程软件,Python下载使用完美教程...
Python是一种通用的计算机编程软件,Python对程序员来说是一个非常有用的工具,它允许你快速地编写代码,并且我们使用软件做出的代码运行速度异常快,Python还具有别的软件不具有的突出点那么就是 ...
- python软件下载教程-使用最方便的计算机编程软件,Python下载使用完美教程
Python是一种通用的计算机编程软件,Python对程序员来说是一个非常有用的工具,它允许你快速地编写代码,并且我们使用软件做出的代码运行速度异常快,Python还具有别的软件不具有的突出点那么就是 ...
- python没基础能自学吗-没学过编程可以自学python吗
目前在很多行业中都在越来越多的应用Python,这也是很多行业学习Python的原因. 我认为是可以的,python语法简单明了,代码可读性高,容易入门.Python的哲学是「做一件事情应该只有一种最 ...
- python是什么和c++是什么区别_编程c++和python的区别
展开全部 论坛 活动 招聘 专题 打开2113CSDN APP Copyright © 1999-2020, CSDN.NET, All Rights Reserved 登录 一颗日成 关注 浅谈52 ...
- python可以从大到小循环嘛_无需编程基础,Python从入门到进阶大法
原标题:无需编程基础,Python从入门到进阶大法
- 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础简介及入门配置
工作将近两年了,做过B/S结构的项目,也做过android,也做过C/S结构的项目,相信无论是那种项目都是基于Java.学习运用Java也已经好多年了,虽然也接触过C/C++,C#,.NET之类的开发 ...
- 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python 逻辑
条件语句 if 条件语句: if (num >= 0 and num <= 5) or (num >= 10 and num <= 15): elif 条件语句: for nu ...
- 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python 正则表达式
字符 . 表示任意除了\n的字符(一个) \ 转义字符(同各种语言) [-] 字符集 表示在字符集中的一个 ,可以,如[abc]表示不在abc中,如果需要使用特殊符号需要转义.所以想学的同学,有必要听 ...
- 《python透明人士,他是凭什么成为主流编程的宠儿?!》python基础语法
Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发 ...
- 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础
1. 写出变量命名时的规则 1 变量名的长度不定,但是其中的字符必须是字母.数字.或者下划线(_),不能使 用空格.标点符等其他字符. 2 变量名的第一个字符不能是数字,必须是字母或下划线. 3 不能 ...
最新文章
- 基于Vue-cli和Vux的webpack配置
- java 布尔表达式_java - 布尔值,条件运算符和自动装箱
- Randomize select algorithm 随机选择算法
- 今天,Python信息量很大!
- centos升级glibc(升级到 2.17版)
- 北林oj-算法设计与分析-Simple Count(C++,思路+代码)
- DIY购车入门5步法则
- HDU 1022 Train Problem I
- 《健康流言终结者》一句话总结
- 工商企业大数据爬虫系统
- No serializer的解决方法
- 总结:伺服电机控制及结合强弱电的控制系统
- JavaScript lambda 表达式介绍
- Matlab的fprintf函数使用百分号问题
- 大数据毕设选题 - 机器学习餐厅销量预测(大数据 python)
- 离线语音芯片-开发指南
- Cesium本地加载地形(dem高程)数据
- C - Wrap very long lines of input into two or more shorter lines
- 海拔4000米计算机设备,普通笔记本海拔4000米以上就不灵了,西藏只能带固态硬盘笔记本!...
- 汽车文化-实用与实在-车身结构