python 的内置模块 re
在 pattern 的 “” 前面需要加上一个 r
用来表示这是正则表达式, 而不是普通字符串
>>> import re >>> ptn = r"r[au]n" >>> print(re.search(ptn, "dog runs to cat")) <re.Match object; span=(4, 7), match='run'>
同样, 中括号 []
中还可以是以下这些或者是这些的组合. 比如 [A-Z]
表示的就是所有大写的英文字母. [0-9a-z]
表示可以是数字也可以是任何小写字母。
注意 re.search只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。
>>> print(re.search(r"r[0-9a-z]n", "dog run to cat r4n")) <re.Match object; span=(4, 7), match='run'> >>> print(re.search(r"r[0-9a-z]n", "dog to cat r4n")) <re.Match object; span=(11, 14), match='r4n'>
flags 参数编译标志位,用于修改正则表达式的匹配方式,如:是否区分大小写,多行匹配
re.S(DOTALL)
|
使.匹配包括换行在内的所有字符 |
re.I(IGNORECASE)
|
使匹配对大小写不敏感
|
re.L(LOCALE)
|
做本地化识别(locale-aware)匹配,法语等
|
re.M(MULTILINE)
|
多行匹配,影响^和$
|
re.X(VERBOSE)
|
该标志通过给予更灵活的格式以便将正则表达式写得更易于理解
|
re.U
|
根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B
|
*注:match和search一旦匹配成功,就是一个match object对象,而match object对象有以下方法:
- group() 返回被 RE 匹配的字符串
- start() 返回匹配开始的位置
- end() 返回匹配结束的位置
- span() 返回一个元组包含匹配 (开始,结束) 的位置
- group() 返回re整体匹配的字符串,可以一次输入多个组号,对应组号匹配的字符串。
a. group()返回re整体匹配的字符串,
b. group (n,m) 返回组号为n,m所匹配的字符串,如果组号不存在,则返回indexError异常
c. groups() 方法返回一个包含正则表达式中所有小组字符串的元组,从 1 到所含的小组号,通常groups()不需要参数,返回一个元组,元组中的元就是正则表达式中定义的组。
分组
当使用 match.group()
时, 他会返回所有组里的内容, 而如果给 .group(1)
里加一个数, 它就能定位你需要返回哪个组里的信息;在括号的开头写上这样的形式 ?P<名字>
就给这个组定义了一个名字. 然后就能用这个名字找到这个组的内容
>>> match = re.search(r"(?P<id>\d+), Date: (?P<date>.+)", "ID: 021523, Date: Feb/12/2017") >>> print(match.group('id')) 021523 >>> print(match.group(1)) 021523 >>> print(match.group()) 021523, Date: Feb/12/2017
相关文章链接:正则表达式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现