Python---正则表达式

正则表达式 :使用re模块,基于re模块中的三个基础方法来做正则匹配,分别是:match, search, findall​​​​​​​

当字符串以r前缀开始时,Python将不会对字符串中的转义字符进行转义处理

re.match(匹配规则,被匹配字符串)

从被匹配字符串开头进行匹配,匹配成功返回匹配对象(包含匹配的信息),匹配不成功返回空

python 复制代码
import re
# 从头开始匹配
s = "abc bac bca cab cba"
result = re.match("abc", s)
print(result)  # <re.Match object; span=(0, 3), match='abc'>
print(result.span())  # (0, 3)
print(result.group())  # abc

result1 = re.match("bac", s)
print(result1)  # None
# print(result1.span())  # 会报错
# print(result1.group())  # 会报错

search(匹配规则,被匹配字符串)

搜索整个字符串,找出匹配的.从前向后,找到第一个就停止,不会继续向后查找

python 复制代码
import re

s = "sd999abc999sdabc"
result = re.search("abc", s)
print(result)  # <re.Match object; span=(5, 8), match='abc'>
print(result.span())  # (5, 8)
print(result.group())  # abc

result1 = re.search("qw", s)
print(result1)  # None
# print(result1.span())  # 会报错
# print(result1.group())  # 会报错

findall(匹配规则,被匹配字符串)

匹配整个字符串,找出全部匹配项

python 复制代码
import re

s = "sd999abc999sdabc"
result = re.findall("abc", s)
print(result)  # ['abc', 'abc']

单字符匹配

. :匹配任意一个字符串(除了\n), \.匹配点本身

\] : 匹配\[\]中列举的字符 \\d : 匹配数字, 即0 - 9 \\D : 匹配非数字 \\s : 匹配空白, 即空格和tab键 \\S : 匹配非空白 \\w : 匹配单词字符, 即a - z, A - Z, 0 - 9, _ \\W : 匹配非单词字符 ```python import re s = "hello @@hiHI !!999 ##hahaHA 456" # 找出全部数字 result = re.findall(r"\d", s) # 当字符串以r前缀开始时,Python将不会对字符串中的转义字符进行转义处理 print(result) # ['9', '9', '9', '4', '5', '6'] # 找出全部非单词字符 result1 = re.findall(r"\W", s) print(result1) # [' ', '@', '@', ' ', '!', '!', ' ', '#', '#', ' '] # 找出全部单词字符 result2 = re.findall(r"\w", s) print( result2) # ['h', 'e', 'l', 'l', 'o', 'h', 'i', 'H', 'I', '9', '9', '9', 'h', 'a', 'h', 'a', 'H', 'A', '4', '5', '6'] # 找出全部a-z和A-Z的的字母 result3 = re.findall(r"[a-zA-Z]", s) print(result3) # ['h', 'e', 'l', 'l', 'o', 'h', 'i', 'H', 'I', 'h', 'a', 'h', 'a', 'H', 'A'] result4 = re.findall(r"[a-z]", s) print(result4) # ['h', 'e', 'l', 'l', 'o', 'h', 'i', 'h', 'a', 'h', 'a'] ``` #### 数量匹配 \* : 匹配前一个规则的字符出现0至无数次 + : 匹配前一个规则的字符出现1至无数次 ? : 匹配前一个规则的字符出现0至1次 {m} : 匹配前一个规则的字符出现m次 {m,} : 匹配前一个规则的字符最少出现m次 {m,n} : 匹配前一个规则的字符出现m到n次 #### 边界匹配 \^ : 匹配字符串开头 $ : 匹配字符串结尾 \\b : 匹配一个单词的边界 \\B : 匹配非单词边界 #### 分组匹配 \| : 匹配左右任意一个表达 () : 将括号中的字符作为一个分组 ```python # 匹配账号:只能有字母和数字组成,长度限制6-10位 r = "^[0-9a-zA-Z]{6,10}$" s = '1234567' s1 = '1234567a' s2 = '1234567a_' print(re.findall(r, s)) # ['1234567'] print(re.findall(r, s1)) # ['1234567a'] print(re.findall(r, s2)) # [] # 匹配QQ号:纯数字,长度5-11,第一位不为0 r1 = "^[1-9][0-9]{4,10}$" q = "0123456" q1 = "123456" print(re.findall(r1, q)) # [] print(re.findall(r1, q1)) # ['123456'] # 匹配邮箱地址:只允许q,163,gmail这三种邮箱地址 # {内容}.{内容}.@{内容} r2 = "(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$)" e = "abc.asd.qwe@163.com.a.c" e1 = "233@123.cdw" print(re.findall(r2, e)) # [('abc.asd.qwe@163.com.a.c', '.qwe', '163', '.c')] print(re.match(r2, e)) # print(re.match(r2, e1)) # None ```

相关推荐
念念010738 分钟前
数学建模竞赛中评价类相关模型
python·数学建模·因子分析·topsis
云天徽上1 小时前
【数据可视化-94】2025 亚洲杯总决赛数据可视化分析:澳大利亚队 vs 中国队
python·信息可视化·数据挖掘·数据分析·数据可视化·pyecharts
☺����1 小时前
实现自己的AI视频监控系统-第一章-视频拉流与解码2
开发语言·人工智能·python·音视频
王者鳜錸2 小时前
PYTHON让繁琐的工作自动化-函数
开发语言·python·自动化
xiao助阵3 小时前
python实现梅尔频率倒谱系数(MFCC) 除了傅里叶变换和离散余弦变换
开发语言·python
麻辣清汤4 小时前
结合BI多维度异常分析(日期-> 商家/渠道->日期(商家/渠道))
数据库·python·sql·finebi
钢铁男儿4 小时前
Python 正则表达式(正则表达式和Python 语言)
python·mysql·正则表达式
钢铁男儿4 小时前
Python 正则表达式实战:解析系统登录与进程信息
开发语言·python·正则表达式
前端小趴菜055 小时前
python - range
python
☺����5 小时前
实现自己的AI视频监控系统-第一章-视频拉流与解码1
人工智能·python·音视频