python正则表达式全套学习详解

引子

什么是正则表达式

正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

正则表达式的语法规则

下面是Python中正则表达式的一些匹配规则,

字符

预定义字符集(可以写在字符集[...]中)

数量词(用在字符或(...)之后)

边界匹配(不消耗待匹配字符串中的字符)

逻辑分组

特殊构造(不作为分组)

re模块

1.Python提供了两种不同的原始操作:match和search。先看一下match,match是从字符串的起点开始做匹配。

re.match()函数

group:返回返回被 RE 匹配的字符串(可以指定组号,如果组号不存在则返回indexError异常)

start:返回匹配开始的位置

end:返回匹配结束的位置

span:返回一个元组包含匹配 (开始,结束) 的位置

Python提供了两种不同的原始操作:match和search。接下来看一下search,search是从字符串的起点开始做匹配。

re.search()函数

match()函数与search()函数的区别

总结

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

2.Python正则表达式re findall()函数和re.finditer()函数

re.findall函数()(注重的是括号)

大家可以看的出来

第一个regex中是带有2个括号的,可以看到其输出是一个list中包含2个tuple

第二个regex中带有1个括号,其输出的内容就是括号匹配到的内容,而不是整个表达式所匹配到的结果。

第三个regex中不带有括号,其输出的内容就是整个表达式所匹配到的内容。

re.finditer()

总结

findall()返回的是括号所匹配到的结果,多个括号就会返回多个括号分别匹配到的结果,如果没有括号就返回整条语句所匹配到的结果;而re.findite返回的是一个MatchObject类型的iterator。

3.Python正则表达式re.sub()函数和re.subn()函数,主要功能实现正则的替换,前者不仅仅可以是字符串,也可以是函数;后者返回元组

re.sub()函数

re.sub用于替换字符串中的匹配项。将字符串中的空格替换成—

re.subn()函数

总结

re.sub()函数和re.subn()函数两者的不同之处在于subn返回替换的次数

接下来用我们学到的东西编写一个计算器。

好,我们的正则模块讲到这里也算是搞一段落了,想和小编交流的小编把自己的联系方式放到下面了

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180118A0R02T00?refer=cp_1026

相关快讯

扫码关注云+社区