python 正则表达式
正则表达式
前言
1、正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
2、正则表达式的使用非常的广泛,是一门独立的语言,基本各个领域都有所使用,如果在python代码中使用正则,需要借助于内置模块re
re模块:
import re
re.match #从开始位置开始匹配,如果开头没有则无
re.search #搜索整个字符串
re.findall #搜索整个字符串,返回一个list
对比以下两个例子:
'''手机号在国内规定为11位,纯数字,有固定的格式'''
# 要求,获取用户手机号判断是否合理
# 手机号开头用13,18,19举例
# 不使用正则实现
user_phone_number = input('please input your phone number:').strip()
if len(user_phone_number) == 11:
if user_phone_number.isdigit():
if user_phone_number.startswith('13') or user_phone_number.startswith('18') or user_phone_number.startswith('19'):
print('Your phone number is up to standard!')
else:
print('Your phone is not up to standard!' )
# 使用正则实现
import re
user_phone_number = input('please input your phone number:').strip()
if re.match('^(13|14|15|18)[0-9]{9}$',user_phone_number):
print('Your phone number is up to standard!')
else:
print('Your phone is not up to standard!' )
可以很容易看出来使用正则减轻了不少代码的编写,如果去实现一些有规律可循,有固定的格式,比如爬取固定的内容,标签的格式一定是固定的,这时候可以使用正则表达式会减轻你的代码编写,下面介绍一些正则表达式常用的字符,以及组合使用。
正则表达式常用字符
- 总结表格如下:
字符组:
字符 | 描述 | 待匹配字符 | 匹配结果 |
---|---|---|---|
[0123456789]/[0-9] | 表示0-9内的数字 | 2 | True |
[a-z] | 表示小写26字母 | a | True |
[A-Z] | 表示大写26字母 | A | True |
[0-9a-zA-Z] | 匹配所有的数字,小写大写字母 | 2eE | True |
特殊符号:
字符 | 描述 |
---|---|
. | 匹配除换行符以外的任意字符 |
\d | 匹配数字 |
^ | 匹配字符串的开始字符 |
$ | 匹配字符串的结尾字符 |
a|b | 匹配字符a或字符b |
() | 匹配括号内的表达式,也表示一个组 |
[...] | 匹配字符组中的字符 |
[^...] | 匹配除了字符组中字符的所有字符 |
量词组:
- 上面两个表格中,如果没有量词修饰的情况下,个个匹配的都是单个字符
- 量词的使用也必须结合字符串,特殊字符等一起使用,不能单独出现
- 量词只能影响前面的一个表达式(abc+,只能影响c)
字符 | 描述 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
重复n次 | |
重复n次或更多次 | |
重复n到m次 |
正则表达式练习:
匹配HammerZe字符的所有字符
匹配HammerZe字符中的H
匹配HammerZe字符中的Ze
匹配HammerZeHammerZeHammerZe这个字符中的所有Hammer
匹配HammerZeHammerZeHammerZe字符中的前两个HammerZe
注意,这个{1,8}的意思是匹配1到8次任意字符,默认位最大次,正则匹配的原则是贪婪匹配。
有贪婪匹配,那么就会有惰性匹配(.*?),如下:
匹配HammerZeHammerZeHammerZe字符中的H
贪婪匹配与非贪婪匹配的关系:#
示例如下:
'''字符<script>123</script>'''
- 惰性匹配:.*?,尽可能少的匹配
正则在线测试工具:#
-
我用的在线编辑正则的网站👉[正则在线工具](在线正则表达式测试 (oschina.net))
-
效果就是上面的练习展示的
-
里面包含很多常用的正则表达式:匹配Email,QQ号,手机号,身份证号等的正则表达式如何编写!
常用表达式在线演示:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗