Python学习笔记模式匹配与正则表达式之统配字符
随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
在正则表达式中,.(句点)字符称为“通配符”。它匹配除了换行之外的所有字符。
#------------------------------------------------我是可耻的分割线-------------------------------------------
1、句点统配字符匹配单个字符,示例代码:
1 2 3 4 5 6 7 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re atRegex = re. compile (r '.at' ) #使用句号匹配at前面的单个字符 mo = atRegex.findall( 'The cat in the hat sat on the flat mat.' ) #检查文本内容 print (mo) #输出符合条件的内容 |
运行结果:
要记住,句点字符只匹配一个字符,这就是为什么在前面的例子中,对于文本flat,只匹配 lat。要匹配真正的句点,就是用倒斜杠转义:\.。
2、句点-星号匹配所有字符,有时候想要匹配所有字符串。例如,假定想要匹配字符串'First Name:',接下来是任意文本,接下来是
'Last Name:',然后又是任意文本。可以用点-星(.*)表示“任意文本”。回忆一下,句点字符表示“除换行外所有单个字符”,星号字符表示
“前面字符出现零次或多次”。
示例代码:
1 2 3 4 5 6 7 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re atRegex = re. compile (r 'First Name: (.*) Last Name: (.*)' ) #使用句-星号匹配所有字符 mo = atRegex.findall( 'First Name: Al Last Name: Sweigart' ) #检查文本内容 print (mo) #输出符合条件的内容 |
运行结果:
点-星使用“贪心”模式:它总是匹配尽可能多的文本。要用“非贪心”模式匹配所有文本,就使用点-星和问号。像和大括号一起使用时那样,
问号告诉Python 用非贪心模式匹配。
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re nongreedyRegex = re. compile (r '<.*?>' ) #非贪心模式 mo = nongreedyRegex.search( '<To serve man> for dinner.>' ) #检查文本内容 print (mo) #输出符合条件的内容 import re nongreedyRegex = re. compile (r '<.*>' ) #贪心模式 mo = nongreedyRegex.search( '<To serve man> for dinner.>' ) #检查文本内容 print (mo) #输出符合条件的内容 |
运行结果:
3、句点字符匹配换行,点-星将匹配除换行外的所有字符。通过传入 re.DOTALL 作为 re.compile()的第二个参数,可以让句点字符匹配所有字符,
包括换行字符。
未使用re.DOTALL参数, 示例代码:
1 2 3 4 5 6 7 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re noNewlineRegex = re. compile ( '.*' ) #非贪心模式 mo = noNewlineRegex.search( 'Serve the public trust.\nProtect the innocent.\nUphold the law.' ).group() #检查文本内容 print (mo) #输出符合条件的内容 |
运行结果:
使用re.DOTALL参数, 示例代码:
1 2 3 4 5 6 7 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang import re noNewlineRegex = re. compile ( '.*' , re.DOTALL) #非贪心模式 mo = noNewlineRegex.search( 'Serve the public trust.\nProtect the innocent.\nUphold the law.' ).group() #检查文本内容 print (mo) #输出符合条件的内容 |
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异