
Python正则表达式之基础篇
正则表达式是用于处理字符串的强大工具,它并不是Python的一部分。
其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语法数量不同。
它拥有自己独特的语法以及一个独立的处理引擎,在提供了正则表达式的语言里,正则表达式的语法都是一样的。
下图展示了使用正则表达式进行匹配的流程:
1.1介绍
正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。
1.2要知道的各种用法
模式字符串使用特殊的语法来表示一个正则表达式:
字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。多数字母和数字前加一个反斜杠时会拥有不同的含义。标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。反斜杠本身需要使用反斜杠转义。
由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r'/t',等价于'//t')匹配相应的特殊字符。
下表列出了正则表达式模式语法中的特殊元素。如果你使用模式的同时提供了可选的标志参数,某些模式元素的含义会改变。
当然这些用法很多,待会会给出经常使用到的用法,多试试就能理解了。
模式
字符类
特殊字符类
1.3re.match函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
re.match(pattern, string, flags = 0)
pattern 正则表达式
string 匹配的字符串
flags 标志位,用来控制匹配方式,下文会讲
直接上程序:
import string,re
r = "abc" #正则表达式
if re.match(r,"abc"): #匹配
print 'done'
else:
print 'defeat'
结果:
done
可以根据上面各表给出的用法,多练练:
import string,re
r = "a.c" #正则表达式 . 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
if re.match(r,"abc"):
print re.match(r,"abc")
print 'done'
else:
print 'defeat'
结果:
<_sre.SRE_Match object at 0x01dd6158>
done
注意这里不是显示匹配成功的字符串,re.match() 返回的是一个对象,不成功返回的是none.
我们可以通过group(num)或groups()匹配对象函数来获取匹配表达式。
程序:
import string,re
r = "a.c"
if re.match(r,"abc"):
line = re.match(r,"abc")
print line.group()
else:
print 'defeat'
结果:
abc
1.3re.search函数
re.search() 扫描整个字符串并返回第一个成功的匹配
re.search(pattern, string, flags=0)
pattern 正则表达式
string 匹配的字符串
flags 标志位,用于控制匹配方式
和re.match()一样,匹配成功re.search方法返回一个匹配的对象,否则返回None。
直接上程序:
import string,re
r = "abc"
s = 'aacawcabc'
if re.search(r,s):
line = re.search(r,s)
print line.group()
结果:
abc
注意:
re.match()和re.search()的区别:
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
1.4re.sub函数
re.sub()函数用于替换匹配项。
re.sub(pattern,repl,string,max = 0)
pattern 正则表达式
repl 替换 项
string 匹配的字符串
count 替换的最大次数 缺省值是0 表示替换所有的匹配
返回的字符串是在字符串中用 RE 最左边不重复的匹配来替换。如果模式没有发现,字符将被没有改变地返回。
程序:
import string,re
pattern = '\d'
repl = "!"
s = 'abcdefg'
line = re.sub(pattern,repl,s)
print line
结果:
!!!!!!!!!abcdefg
1.5正则表达式修饰符 - 可选标志
我们来说说什么是标志位:
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志:
程序:
import string,re
pattern = '[Aa][Bb][Cc][Dd]'
s = 'AbCd'
if re.match(pattern,s):
line = re.match(pattern,s)
print line.group()
结果:
AbCd
上面程序可以通过选择标志位来实现:
import string,re
pattern = 'abcd'
s = 'AbCd'
if re.match(pattern,s,re.I):
line = re.match(pattern,s,re.I)
print line.group()
结果;
AbCd
1.6re.compile函数
使用re的一般步骤是先使用re.compile()函数,将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果(一个Match实例),最后使用Match实例获得信息,进行其他的操作。
程序:
import string,re
pattern = re.compile('\d+')
s = 'aabbccdd'
if pattern.match(s):
line = pattern.match(s)
print line.group()
结果:
11223344
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
ALTER TABLE ADD 多个 INDEX:数据库批量索引优化的高效实践 在数据库运维与性能优化中,索引是提升查询效率的核心手段。当业务 ...
2025-08-27Power BI 去重函数:数据清洗与精准分析的核心工具 在企业数据分析流程中,数据质量直接决定分析结果的可靠性。Power BI 作为主 ...
2025-08-27CDA 数据分析师:数据探索与统计分析的实践与价值 在数字化浪潮席卷各行业的当下,数据已成为企业核心资产,而 CDA(Certif ...
2025-08-27t 检验与 Wilcoxon 检验:数据差异比较的两大统计利器 在数据分析中,“比较差异” 是核心需求之一 —— 如新药疗效是否优于旧药 ...
2025-08-26季节性分解外推法:解锁时间序列预测的规律密码 在商业决策、资源调度、政策制定等领域,准确的预测是规避风险、提升效率的关键 ...
2025-08-26CDA 数据分析师:数据治理驱动下的企业数据价值守护者 在数字经济时代,数据已成为企业核心战略资产,其价值的释放离不开高 ...
2025-08-26基于 SPSS 的 ROC 曲线平滑调整方法与实践指南 摘要 受试者工作特征曲线(ROC 曲线)是评估诊断模型或预测指标效能的核心工具, ...
2025-08-25神经网络隐藏层神经元个数的确定方法与实践 摘要 在神经网络模型设计中,隐藏层神经元个数的确定是影响模型性能、训练效率与泛 ...
2025-08-25CDA 数据分析师与数据思维:驱动企业管理升级的核心力量 在数字化浪潮席卷全球的当下,数据已成为企业继人力、物力、财力之后的 ...
2025-08-25CDA数据分析师与数据指标:基础概念与协同逻辑 一、CDA 数据分析师:数据驱动时代的核心角色 1.1 定义与行业价值 CDA(Certified ...
2025-08-22Power Query 移动加权平均计算 Power Query 移动加权平均设置全解析:从原理到实战 一、移动加权平均法的核心逻辑 移动加权平均 ...
2025-08-22描述性统计:CDA数据分析师的基础核心与实践应用 一、描述性统计的定位:CDA 认证的 “入门基石” 在 CDA(Certified Data Analy ...
2025-08-22基于 Python response.text 的科技新闻数据清洗去噪实践 在通过 Python requests 库的 response.text 获取 API 数据后,原始数据 ...
2025-08-21基于 Python response.text 的科技新闻综述 在 Python 网络爬虫与 API 调用场景中,response.text 是 requests 库发起请求后获取 ...
2025-08-21数据治理新浪潮:CDA 数据分析师的战略价值与驱动逻辑 一、数据治理的多维驱动引擎 在数字经济与人工智能深度融合的时代,数据治 ...
2025-08-21Power BI 热力地图制作指南:从数据准备到实战分析 在数据可视化领域,热力地图凭借 “直观呈现数据密度与分布趋势” 的核心优势 ...
2025-08-20PyTorch 矩阵运算加速库:从原理到实践的全面解析 在深度学习领域,矩阵运算堪称 “计算基石”。无论是卷积神经网络(CNN)中的 ...
2025-08-20数据建模:CDA 数据分析师的核心驱动力 在数字经济浪潮中,数据已成为企业决策的核心资产。CDA(Certified Data Analyst)数据分 ...
2025-08-20KS 曲线不光滑:模型评估的隐形陷阱,从原因到破局的全指南 在分类模型(如风控违约预测、电商用户流失预警、医疗疾病诊断)的评 ...
2025-08-20偏态分布:揭开数据背后的非对称真相,赋能精准决策 在数据分析的世界里,“正态分布” 常被视为 “理想模型”—— 数据围绕均值 ...
2025-08-19