Python3 re模块match与search

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等,本篇文章重点讲解一下Python3 中 re.match与re.search。

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/python

import re
print(re.match('www''www.runoob.com').span())  # 在起始位置匹配
print(re.match('com''www.runoob.com'))         # 不在起始位置匹配

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

(0, 3)
None

实例

#!/usr/bin/python3
import re

line = "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/python3

import re

print(re.search('www''www.runoob.com').span())  # 在起始位置匹配
print(re.search('com''www.runoob.com').span())         # 不在起始位置匹配

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

(0, 3)
(11, 14)

实例

#!/usr/bin/python3

import re

line = "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/python3

import re

line = "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

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/12228.html

(0)
晴川运维晴川运维
上一篇 4天前
下一篇 4天前

相关推荐

  • 通过Navicat访问Linux中安装的MySQL数据库具体方法

    本篇文章为大家分享一下通过Navicat访问Linux中安装的MySQL数据库具体方法,有需要的小伙伴可以参考一下。 1、安装好MySQL,检查是否正常登录 2、进入mysql数据…

    Linux系统 2025年6月28日
  • 使用selenium实现cookies免密登录

    一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站。 获取一个可用的cookies 获…

    Linux系统 2025年6月13日
  • 细说nginx负载均衡

    Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器,Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一…

    Linux系统 2025年7月6日
  • CentOS7中安装Weblogic具体步骤

    WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE架构的中间件,BEA WebLogic是用于开发、集成、部署和管理…

    Linux系统 2025年6月8日
  • Linux安装Nginx具体方法

    Nginx 是一款面向性能设计的 HTTP 服务器,相较于 Apache、lighttpd 具有占有内存少,稳定性高等优势,下面为大家分享一下Linux安装Nginx具体方法。 准…

    Linux系统 2025年7月4日
  • Linux memcache安装和配置(自启动)过程详解

    memcache 是一个高性能的分布式的内存对象缓存系统,通过在内存中维护一张统一的、巨大的 Hash 表,它能够用来存储各种格式的数据,包括图像、视频、文件及数据库检索的结果等。…

    Linux系统 2025年6月18日
  • 使用GitHub搭建专属的服务器

    现在固定公网IP资源稀缺,虽然说IPv6已经开始使用,但是用的人并不多,大部分用的都是IPv4,想要搞一个自己网站,首先就是需要一个固定的公网IP,但是每年却需要缴纳不少的mone…

    Linux系统 2025年6月8日
  • 跨平台 canvas 绘图框架SpriteJS

    SpriteJS 是一款由 360 奇舞团开源的跨终端 canvas 绘图库,可以基于 canvas 快速绘制结构化 UI 、动画和交互效果,并发布到任何拥有 canvas 环境的…

    Linux系统 2025年6月8日
  • Linux中高效的学习数学

    Linux 提供了大量的教育软件和许多优秀的工具来帮助各种年龄段和年级的学生学习和练习各种各样的习题,这通常是以交互的方式进行。本文为这些各种各样的教育软件和应用提供了一个介绍。 …

    Linux系统 2025年6月4日
  • 详解SQLite关键字AUTOINCREMENT

    autoincrement的中文意思就是自动递增的意思,在SQLite 中T是一个关键字,用于表中的字段值自动递增。可以在创建表时在特定的列表名称上使用AUTOINCREMENT关…

    Linux系统 2025年7月4日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注