正则表达式

1. re模块操作

在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re

1.1 re模块的使用过程
python 复制代码
# 导入re模块
import re
#使用match方法进行匹配操作
result=re.match(正则表达式,要匹配的字符串)
#如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()
1.2 re 模块示范(匹配以itcast开头的语句)
python 复制代码
import re
result=re.match("rongqian","rongqian.cn")

result.group()
1.3 说明

re.match() 能够匹配出以xxxx开头的字符串

2.匹配单个字符

2.1 \d 匹配一位数字 0-9
python 复制代码
import re
print(re.match("速度与激情\d","速度与激情7"))
2.2 [ ] 匹配范围 [ ] 中任意一个都可以 注意:这里的中括号不是列表,而是不要分隔符
python 复制代码
import re
print(re.match("速度与激情[36-8]$","速度与激情7"))
2.3 \s 匹配空白,即 空格,tab键
python 复制代码
import re
print(re.match("速度与激情\s\d$","速度与激情 7"))
2.4 . 匹配任意1个字符(除了\n)
python 复制代码
import re 
print(re.match("速度与激情.$","速度与激情A"))

3 . 匹配多个字符

3.1 {m,n} 匹配前一个字符出现从m到n次
python 复制代码
import re  #导入正则模块
print(re.match("速度与激情\d{1,2}$","速度与激情19"))
3.2 {m} 匹配前一个字符出现m次

需求:匹配出,8到20位的密码,可以是大小写英文字母,数字,下划线

python 复制代码
import re

ret=re.match("[a-zA-Z0-9_]{6}","12a3g45678")
print(ret.group())

ret=re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66")
print(ret.group())
3.4 ? 匹配前一个字符出现1次或0次,即要么有1次,要么没有

需求:匹配出,0到99之间的数字

python 复制代码
import re
ret=re.match("[1-9]?[0-9]","7")
print(ret.group())

ret=re.match("[1-9]?\d","33")
print(ret.group())

ret=re.match("[1-9]?\d","09")
print(ret.group())
3.5 * 匹配前一个字符出现0次或者无线次,即可有可无

需求:匹配出,一个字符串第一字母为大小字符,后面都是小写字母并且这些小写字母可有可无

python 复制代码
import re

ret=re.match("[A-Z][a-z]*","M")
print(ret.group())

ret=re.match("[A-Z][a-z]*","MnnM")
print(ret.group())

ret=re.match("[A-Z[a-z]*]","Aabcdef")
print(ret.group())
3.6 + 匹配前一个字符出现1次或者无限次

需求:匹配出,变量名是否有效

python 复制代码
import re

names=["names1","_name","2_name","__name__"]

for name in names:
     ret=re,match("[a-zA-Z0-9_]+[\w]*",name)
     if ret:
        print("变量名 %s 符合要求"% ret.group())
     else:
        print("变量名 %s 非法" % name)
相关推荐
Hgfdsaqwr1 天前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
s1hiyu1 天前
使用Scrapy框架构建分布式爬虫
jvm·数据库·python
2301_763472461 天前
使用Seaborn绘制统计图形:更美更简单
jvm·数据库·python
熊文豪1 天前
金仓数据库如何以“多模融合“重塑文档数据库新范式
数据库·金仓数据库·电科金仓·mongodb迁移
霖霖总总1 天前
[小技巧56]深入理解 MySQL 聚簇索引与非聚簇索引:原理、差异与实践
数据库·mysql
Dreamboat-L1 天前
Redis及其两种持久化技术详解
数据库·redis·缓存
伐尘1 天前
【MySQL】间隙锁 与 排他锁 的区别
数据库·mysql
浒畔居1 天前
机器学习模型部署:将模型转化为Web API
jvm·数据库·python
一个响当当的名号1 天前
lectrue9 索引并发控制
java·开发语言·数据库
liu****1 天前
4.Qt窗口开发全解析:菜单栏、工具栏、状态栏及对话框实战
数据库·c++·qt·系统架构