python 正则表达式re 模块的基本使用方法

ops/2024/11/25 5:45:27/

目录

  • 一、正则化表达式语法
    • 1、如下表格:
    • 2、元字符
  • 二、re模块常用方法
    • 1、compile
    • 2、findall
    • 3、search
    • 4、match
    • 5、split
    • 6、sub
    • 7、finditer

一、正则化表达式语法

1、如下表格:

语法意义
.匹配除换行外的任意字符(如果DOTALL则连换行也匹配)
^匹配字符串开始 (如果MULTILINE,也匹配换行符之后)
$匹配字符串结束(如果MULTILINE,也匹配换行符之前)
*匹配0个或更多个由前面的正则表达式定义的片段,贪婪方式(尽可能多的匹配)
+匹配1个或更多个由前面的正则表达式定义的片段,贪婪方式
?匹配0个或1个由前面的正则表达式定义的片段,贪婪方式
*?, +?,??非贪婪版本的*, +, 和? (尽可能少的匹配)
{m,n}匹配mn次由前面的正则表达式定义的片段,贪婪方式
{m,n}?匹配mn次由前面的正则表达式定义的片段,非贪婪方式
[…]匹配方括号内内的字符集中的任意一个字符
|等于“或”
(…)匹配括号内的表达式,也表示一个组
/number匹配先前匹配过的组(通过序号,组自动从1 - 99编号)
/A匹配字符串开始
/b匹配单词边界
/B匹配一个空串(非单词边界)
/d匹配任意数字等价于[0-9]
/D匹配任意非数字等价于[^\d]
/s匹配任意空白字符
/S匹配任意非空字符
/w匹配字母数字
/W匹配非字母数字
/Z匹配字符串结束
//匹配反斜杠

2、元字符

① . 通配符(除了 \n不能匹配,可以匹配其他任意一个字符)
② ^ 以该字符串开头
③ $ 以该字符串结尾
④ * 重复前一个字符,0~无穷次
⑤ + 重复前一个字符,1~无穷次在这里插入代码片
⑥ ? 匹配前一个字符,0~1个
⑦ { } 自定义重复范围,例:
{0,} 重复0~无穷次
{1,2} 重复1~2次
{6} 重复6次
注:默认上述元字符均为贪婪匹配,后面加 ?,变为惰性匹配

python">import rev1 = re.findall("a..b", "baasbartb")
print(v1)  # ['aasb', 'artb']
v2 = re.findall("^ba", "baasbartb")
print(v2)  # ['ba']
v3 = re.findall("tb$", "baasbartb")
print(v3)  # ['tb']
v4 = re.findall("a*", "baasbartb")
print(v4)  # ['', 'aa', '', '', 'a', '', '', '', '']
v5 = re.findall("a+", "baasbartb")
print(v5)  # ['aa', 'a']
v6 = re.findall("a?", "baasbartb")
print(v6)  # ['', 'a', 'a', '', '', 'a', '', '', '', '']
v7 = re.findall("a{1,2}", "baasbartaaab")
print(v7)  # ['aa', 'a', 'aa', 'a']
v8 = re.findall("a{1,2}?", "baasbartaaab")
print(v8)  # ['a', 'a', 'a', 'a', 'a', 'a']

二、re模块常用方法

1、compile

正则表达式的样式编译为一个 正则表达式对象 (正则对象),可以用于匹配,通过这个对象的方法 match(), search() 以及其他如下描述。

序列

python">co = re.compile("\d+")
v = co.findall("wded123fw54") # v = re.findall(co,"wded123fw54")也可以
print(v)    # ['123', '54']

等价于

python">v = re.findall("\d+", "wded123fw54")
print(v)    # ['123', '54']

如果需要多次使用这个正则表达式的话,使用 re.compile() 和保存这个正则对象以便复用,可以让程序更加高效。

2、findall

返回所有满足匹配条件的结果,放在列表里。

python">import rev1 = re.findall("\d+", "wded123fw54")
print(v1)  # ['123', '54']

3、search

只返回第一个查到结果,构成的对象。可通过group方法得到匹配的字符串。没查到结果,返回None

python">v2 = re.search("\d+", "wded123fw54").group()
print(v2)  # 123v3 = re.search("\d{5}}", "wded123fw54")
print(v3)   # None

4、match

类似search,但只从字符串开头匹配。

python">v = re.match("\d+", "wded123fw54")
print(v)  # None

5、split

分割

python">v1 = re.split('\d+',"wded123fw54")
print(v1)  # ['wded', 'fw', '']v2 = re.split('\d+',"wded123fw54a",1)
print(v2)  # ['wded', 'fw54a']

6、sub

替换

python">v1 = re.sub('\d+',"A","wded123fw54")
print(v1)  # wdedAfwAv2 = re.sub('\d+',"A","wded123fw54",1)
print(v2)  # wdedAfw54

7、finditer

类似findall方法,但是返回的是一个迭代器

python">v1 = re.finditer("\d+", "wded123fw54")
print(v1)  # <callable_iterator object at 0x000002676E7004C0>
print(v1.__next__().group())    # 123
print(v1.__next__().group())    # 54

更多re用法可查询官网:https://docs.python.org/zh-cn/3/library/re.html#re.purge


http://www.ppmy.cn/ops/136491.html

相关文章

修改一下达梦disql 提示符

经常用disql的有时某些信息希望提示一下&#xff0c;默认的只显示SQL> 为了方便使用&#xff0c;可以在 glogin.sql 中增加些内容。 vi $DM_HOME/bin/disql_conf/glogin.sql增加以下几行 set time on set lineshow offcol global_name new_value global_name SELECT ins…

抓包 127.0.0.1 (loopback) 使用 tcpdump+wireshark

直接使用 wireshark无法抓取 127.0.0.1环回的数据包&#xff0c;一种解决方法是先传到路由器再返回&#xff0c;但这样可能造成拥塞。 Linux 先使用tcpdump抓包并输出为二进制文件&#xff0c;然后wireshark打开。 比如 sudo tcpdump -i lo src host localhost and dst host…

(四)3D视觉机器人的手眼标定(眼在手外)

内容 1.背景介绍1.1 思路T_target_to_cam求解公式求解 2.操作流程 1.背景介绍 3D视觉机器人指的是机器人通过3D相机提供的3D点云视觉信息&#xff0c;完成某些实际的功能。   目标是将场景信息从相机坐标系变换至机械臂坐标系中&#xff0c;最终是获得相机到机械臂基座的空间…

MATLAB的addpath和rmpath函数增加或删除路径

在进行MBD建模开发时&#xff0c;模型生成代码时常需要加载一些其他的文件&#xff0c;例如代码生成模版文件cgt文件、模型所涉及的头文件&#xff0c;这个时候可以在模型的回调函数中使用addpath和rmpath函数加载和删除路径&#xff0c;例如设置模型的加载之前的回调函数在模型…

代码风格与规范

2. 代码风格与规范 代码风格与规范是编写高质量软件的基础。良好的代码风格不仅提升代码的可读性和可维护性&#xff0c;还促进团队协作&#xff0c;减少潜在的错误。以下内容将详细介绍在Python开发中需要注意的关键点。 2.1 遵循PEP 8代码风格指南 什么是PEP 8&#xff1f…

SATA接口不通分析案例分享

问题&#xff1a; 反馈有台NVR的某个接口SATA不通&#xff08;共有4个SATA接口&#xff0c;采用SATA HUB JMB575&#xff09;&#xff0c;挂载硬盘不上。 分析&#xff1a; 1、直接对换问题口SATA1与正常口SATA2的SATA数据线&#xff0c;SATA1口还是异常&#xff0c;挂在不上…

Python 开发工具 -- PyCharm 简介

一、PyCharm 简介 PyCharm 是由 JetBrains 打造的一款 Python IDE。 PyCharm 具备一般 Python IDE 的功能&#xff0c;比如&#xff1a;调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制等。 另外&#xff0c;PyCharm 还提供了一些很好的功能用…

小米xiaomi

文章目录 一、vector和list的区别&#xff1f;二、include 双引号和尖括号的区别&#xff1f;三、set的底层数据结构&#xff1f;四、set和multiset的区别&#xff1f;五、map和unordered_map的区别&#xff1f;六、虚函数和纯虚函数的区别&#xff1f;七、extern C有了解过吗&…