当前位置: 首页 > news >正文

从0开始学python -43

Python3 正则表达式

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。

re 模块使 Python 语言拥有全部的正则表达式功能。

compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

本章节主要介绍 Python 中常用的正则表达式处理函数,如果你对正则表达式不了解,可以查看我们的 正则表达式 - 教程。


re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

函数语法

re.match(pattern,string, flags=0)

函数参数说明:

参数描述
pattern匹配的正则表达式
string要匹配的字符串。
flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志

匹配成功re.match方法返回一个匹配的对象,否则返回None。

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

匹配对象方法描述
group(num=0)匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups()返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
#!/usr/bin/pythonimport re
print(re.match('www', 'www.runoob.com').span())  # 在起始位置匹配
print(re.match('com', 'www.runoob.com'))         # 不在起始位置匹配

以上实例运行输出结果为:

(0,3)
None
#!/usr/bin/python3
import reline = "Cats are smarter than dogs"
# .* 表示任意匹配除换行符(\n、\r)之外的任何单个或多个字符
# (.*?) 表示"非贪婪"模式,只保存第一个匹配到的子串
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)if matchObj:print ("matchObj.group() : ", matchObj.group())print ("matchObj.group(1) : ", matchObj.group(1))print ("matchObj.group(2) : ", matchObj.group(2))
else:print ("No match!!")

以上实例执行结果如下:

matchObj.group():Cats are smarter than dogs
matchObj.group(1):Cats
matchObj.group(2):  smarter

re.search方法

re.search 扫描整个字符串并返回第一个成功的匹配。

函数语法:

re.search(pattern,string, flags=0)

函数参数说明:

参数描述
pattern匹配的正则表达式
string要匹配的字符串。
flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志

匹配成功re.search方法返回一个匹配的对象,否则返回None。

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

匹配对象方法描述
group(num=0)匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups()返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
#!/usr/bin/python3import reprint(re.search('www', 'www.runoob.com').span())  # 在起始位置匹配
print(re.search('com', 'www.runoob.com').span())         # 不在起始位置匹配

以上实例运行输出结果为:

(0,3)
(11,14)
#!/usr/bin/python3import reline = "Cats are smarter than dogs"searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)if searchObj:print ("searchObj.group() : ", searchObj.group())print ("searchObj.group(1) : ", searchObj.group(1))print ("searchObj.group(2) : ", searchObj.group(2))
else:print ("Nothing found!!")

以上实例执行结果如下:

searchObj.group():Cats are smarter than dogs
searchObj.group(1):Cats
searchObj.group(2):  smarter

re.match与re.search的区别

re.match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回 None,而 re.search 匹配整个字符串,直到找到一个匹配。

#!/usr/bin/python3import reline = "Cats are smarter than dogs"matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:print ("match --> matchObj.group() : ", matchObj.group())
else:print ("No match!!")matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:print ("search --> matchObj.group() : ", matchObj.group())
else:print ("No match!!")

以上实例运行结果如下:

No match!!
search --> matchObj.group():  dogs

http://www.lryc.cn/news/24642.html

相关文章:

  • Kafka基本原理
  • css3的重点内容
  • 《Roller: Fast and Efficient Tensor Compilation for Deep Learning》
  • 顺丰同城测试开发一面 49min答案,全文7000字,面试总结都在这里了
  • docker启动容器服务之后访问失败
  • GraalVM-云原生时代的JVM(Java)
  • 如何外网登录访问瑞友天翼应用虚拟化系统?——快解析内网端口映射方案
  • 蓝海彤翔执行副总裁张加廷接受【联播苏州】独家专访
  • iOS Airplay Screen Mirroring 同屏技术详解
  • 更新 Python 100道基础入门检测练习题【下篇】(附答案)
  • [RDMA-高级计算机网络report] Congestion Control for Large-Scale RDMA Departments
  • ROS2功能包Hello world(python)
  • 数学建模竞赛的一些心得体会
  • 什么是自动化测试?自动化测试现状怎么样?
  • CHAPTER 2 Web HA集群部署 - Heartbeat
  • 蓝桥杯每日一题:不同路径数(dfs深度优先)
  • NCRE计算机等级考试Python真题(十)
  • 【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32
  • RK3288-android8-es7210-阵列麦克风
  • 硬件工程师常见问题与答疑
  • 【Java】Java进阶学习笔记(一)—— 面向对象(封装)
  • jsp拆迁管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • CCNP350-401学习笔记(易错题合集)
  • 喀秋莎Camtasia2023最新版本电脑录屏剪辑软件
  • 「考研算法」
  • Android Framework-操作系统基础
  • 美国最新调查显示 50% 企业已在用 ChatGPT,其中 48% 已让其代替员工,你怎么看?
  • [Java·算法·中等]LeetCode17. 电话号码的字母组合
  • C#7/C#8/C#9 与dotnetSDK 以及dotnet framework对应关系
  • jvm调优经验总结