python提升篇(九)---正则表达式之re.match函数

2022-06-01 18:42:12 浏览数 (1)

伽利略·伽利雷(1564年2月15日~1642年1月8日)原名(Galileo di Vincenzo Bonaulti de Galilei)是意大利天文学家,物理学家和工程师。伽利略被称为“观测天文学之父”,被称为“现代物理学之父”、“科学方法之父”、“现代科学之父 ”。 [1] 伽利略研究了速度和加速度,重力和自由落体,相对论,惯性,弹丸运动原理,并从事应用科学和技术的研究,描述了摆的性质和“ 静水平衡”,发明了温度计和各种军事罗盘,并使用用于天体科学观测的望远镜。他对观测天文学的贡献包括对金星相的望远镜确认,对金星的观测。木星的四颗最大卫星,土星环的观测和黑子的分析。伽利略(Galileo)提倡日心说和哥白尼主义在他的一生中一直是有争议的,当时大多数人都赞成地心模型(如Tychonic系统)。他遇到了天文学家的反对,他们由于缺乏恒星视差而怀疑日心论。此事由罗马宗教裁判所在1615年调查,得出的结论是日心论“在哲学上是愚蠢而荒谬的,由于在许多地方与教皇统治明显矛盾,因此形式上是异端的”。伽利略后来在“关于两个主要世界体系的对话”(1632年)中捍卫了他的观点,该对话似乎攻击了教皇乌尔班八世,从而疏远了他和耶稣会士,后者一直支持伽利略。他被宗教裁判所审判,被发现“强烈怀疑异端”,并被迫退缩。他在软禁中度过了余生。在软禁期间,他写了《两门新科学》,其中总结了他四十年前在现在被称为运动学和材料强度的两门科学上所做工作。

前言

上周的文章中,我们学习了面向对象的方法重写,从而知道了当父类的方法不能够用于我们的实际情况时,选择方法重写,添加我们需要的功能代码。除此之外呢,Python的面向对象还有方法重载的操作(方法名一样,但是方法的参数类型和个数不一样),这些都是我们可以自学的地方。

Python面向对象的文章,小编暂时就讲到这个地方了,为什么呢?首先经过前面的积累,我相信,大家已经具备了一定的实力去自学Python面向对象了;其次呢,面向对象的深入学习是比较深的,然而我们的教程旨在带领大家入门和提升,但却不是深入,如果需要深入,我想强大的你已经找到很多的方法了;最后一个原因就是Python面向对象可以说是面向开发而生(大型项目),然而目前小编的项目呢都是算法类居多,因此对于开发这一块小编的精力就投入的比较少(当然,这里不是说开发很重要啊,相反,开发在以后的工作中十分重要),除此以外,小编之分享的教程已经受用于大部分项目了(非工程化类型),足够我们去学习和使用了,因此Python面向对象呢,我们就告一段落了。

今天,我们将继续来学习,Python 之-----正则表达式。

一、python正则表达式

老生常谈,凡是遇到要学习的东西,我们都尽量的追根溯源,正则表达式,我们为什么要学习呢?或者说他有什么好处呢?首先来看一段官方解释:

正则表达式(regular expression)描述了一种字符串匹配的模(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

小编解读:综上,正则表达式的意义在于在一个字符串中检查是否存在我需要的东西,比如 世界这两个字存在于 世界和平这四个字中一样,我们可以通过正则表达式进行许多的工作,其实他的另外一个意思是匹配,是的就如同我们之前图像处理教程的图像匹配问题类似。今天先来介绍re.match函数,看看它到底有何妙用。

1.1 re.match()函数

该函数将会从字符串的开头位置进行匹配,同时设置一个标志位(开始,结束,开始结束)如果不是起始位置匹配成功的话,match()就返回none。

1.2 用法

代码语言:javascript复制
re.search(pattern,string, flags=0)

参数说明:

pattern: 你想要匹配的表达式(皮;匹配模式,可以就是一个单词等等)

string: 需要进行匹配的字符串(pattern就是在这里面进行匹配)

flags: 标志位,用于对匹配模式进行限定,如大小写等等。

match() 方法一旦匹配成功,就是一个match object对象,而match object对象有以下方法:

  • start() 返回匹配开始的位置
  • end() 返回匹配结束的位置
  • span()返回一个元组包含匹配 (开始,结束) 的位置
  • group()返回被 RE 匹配的字符串

1.3 代码实践

代码语言:javascript复制
#codingLutf-8
# 导入 re包 包含了很多正则表达式的函数
import re

# 首先我们来匹配IT这两个字母,并且匹配位置在起始位置匹配
print(re.search('IT', 'IT jinzjiezhilv').span())  
# 如果我们不在起始位置匹配,该函数又将会输出什么呢?
print(re.search('xxx', 'IT jinzjiezhilv.xxx'))

代码解读:从以上代码中我们可以理解到,本意是在IT jinzjiezhilv这个字符串中匹配(也可以理解为查找)IT这两个字母,一旦匹配成功呢?就返回开始结束的位置,然而第二行匹配却是没有从开始位置匹配(也就是没有span),因此它的输出将会是None.

效果演示:

1.4 代码实践2

代码语言:javascript复制
#codingLutf-8
# 导入 re包 包含了很多正则表达式的函数
import re


demo = re.match("shijie","shijie,nihao!")

if demo:
    print(demo.group())
else:
    print("匹配不存在!")
     

代码解读:从以上代码我们可以看出,如果匹配成功,我们将会调用group()函数,将匹配到的字符串打印出来,如果没有 将会输出匹配不存在字样。

效果演示:

END

结语

今天的分享到此结束了,结束了Python面向对象的学习,我们开始了正则化表达式的函数使用,re.match() 仅仅只是其中一个个例,正则化匹配还有很多类似的函数,大家可以自行学习哦,原理都是相同的,我们下期再见!

编辑:玥怡居士|审核:小圈圈居士

0 人点赞