正则表达式测试工具(python正则表达式使用实例)

大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习Python中关于正则表达式的函数。 re模块主要定义了9个常量、12个函数、1个异常,每个常量和函数猪哥都会通过实际代码案例讲解,让大家能更直观的了解其作用! 注:为避免出现代码格式错乱,猪哥尽量使用代码截图演示哦。 re模块简介 聊到Python正则表达式的支持,首先肯定会…

大部分计算机语言的正则表达式设计方案都师从于Perl,因此语法基本上类似,不一样的是每一种语言都是有自身的函数公式去适用正则表达式,今日咱们就来学习培训 Python中有关 正则表达式的函数公式。

Python正则表达式,看这一篇就够了

re模块关键界定了9个常量、12个函数公式、1个出现异常,每一个常量解析函数猪哥都是会根据具体编码实例解读,让大伙儿能更直接的认识其功效!

注:为防止出现代码格式紊乱,猪哥尽可能应用编码截屏演试哦。

Python正则表达式,看这一篇就够了

re模块介绍

谈到Python正则表达式的适用,最先毫无疑问会想起re库,这是一个Python解决文字的标准库

标准库的法律行为这是一个Python内嵌控制模块,不用附加免费下载,现阶段Python内嵌控制模块大约有300个。可以这里查询Python全部的内嵌控制模块:
https://docs.python.org/3/py-modindex.html#cap-r

由于re是内嵌控制模块,因此不用再免费下载,应用时立即引进就可以:

import re

re模块官方网文本文档:
https://docs.python.org/zh-cn/3.8/library/re.html

re模块库源代码:
https://github.com/python/cpython/blob/3.8/Lib/re.py

Python正则表达式,看这一篇就够了

re模块常量

常量即表明不能改变的自变量,一般用来做标识。

re模块中有9个常量,常量的值全是int类型!

Python正则表达式,看这一篇就够了

图中我们可以见到,全部的常量全是在RegexFlag枚举类来完成,这也是在Python 3.6做的重做。在Python 3.6之前版本号是立即将常量写在re.py中,应用枚举类型的益处便是便于管理和应用!

Python正则表达式,看这一篇就够了

下边大家来快速学习这种常量的功能及怎么使用她们,按常见度排列!

1. IGNORECASE

语法:re.IGNORECASE 或缩写为 re.I

功效:开展忽视大小写字母匹配。

编码实例:

Python正则表达式,看这一篇就够了

在默认设置匹配模式下英文大写字母B没法匹配小写字母字母b,而在 忽视大小写字母 模式下是可以的。

2. ASCII

语法:re.ASCII 或缩写为 re.A

功效:说白了,ASCII表明ASCII码的含意,让w,W,b,B,d,D,sS只匹配ASCII,而不是Unicode。

编码实例:

Python正则表达式,看这一篇就够了

在默认设置匹配模式下w 匹配到了全部字符串数组,而在ASCII模式下,只匹配到了a、b、c(ASCII编号适用的标识符)。

留意:这只对字符串数组匹配模式合理,对字节数匹配模式失效。

3. DOTALL

语法:re.DOTALL 或缩写为 re.S

功效:DOT表明.,ALL表示全部,连在一起便是.匹配全部,包含回车符n默认设置模式下.是不可以匹配行符n的。

编码实例:

Python正则表达式,看这一篇就够了

在默认设置匹配模式下.并沒有匹配回车符n,反而是将字符串数组分离匹配;而在re.DOTALL模式下,回车符n与字符串数组一起被匹配到。

留意:默认设置匹配模式下.并不会匹配回车符n

4. MULTILINE

语法:re.MULTILINE 或缩写为 re.M

功效:几行模式,当某字符串数组中有回车符n,默认设置模式下是不兼容回车符特点的,例如:行开始 和 行末尾,而几行模式下是适用匹配行开始的。

编码实例:

Python正则表达式,看这一篇就够了

正则表达式中^表明匹配行的开始,默认设置模式下它只有匹配字符串数组的开始;而在几行模式下,它还能够匹配 回车符n后边的标识符。

留意:正则表达式语法中^匹配行开始、A匹配字符串数组开始,单行道模式下它两实际效果一致,几行模式下A不可以鉴别n

5. VERBOSE

语法:re.VERBOSE 或缩写为 re.X

功效:详尽模式,可以在正则表达式里加注释!

编码实例:

Python正则表达式,看这一篇就够了

默认设置模式下并不可以鉴别正则表达式中的注解,而详尽模式是可以分辨的。

当一个正则表达式十分复杂的情况下,详尽模式也许能给大家带来另一种注解方法,但它不应该变成耍酷的方式,提议慎重考虑到后应用!

6.LOCALE

语法:re.LOCALE 或缩写为 re.L

功效:由现阶段语言表达地区决策w,W,b,B和大小写字母比较敏感匹配,这一标识只有对byte款式合理。这一标识官方网已经不强烈推荐应用,由于语言表达地区体制很不靠谱,它一次只有解决一个 “习惯性”,并且只对8位字节数合理。

留意:因为这一标识官方网已经不强烈推荐应用,并且猪哥也没应用过,因此也不得出具体的实例!

7.UNICODE

语法:re.UNICODE 或缩写为 re.U

功效:与 ASCII 模式相近,匹配unicode编号适用的标识符,可是 Python 3 默认设置字符串数组已经是Unicode,因此有点儿多余。

8. DEBUG

语法:re.DEBUG

功效:表明编译程序时的debug信息内容。

编码实例:

Python正则表达式,看这一篇就够了

尽管debug方式下的确会打印出编译程序信息内容,但猪哥并不理解这是什么语言 及其表示的含意,期待掌握的好朋友能鼎力相助。

9.TEMPLATE

英语的语法:re.TEMPLATE 或缩写为 re.T

功效:猪哥也没弄懂TEMPLATE的实际用途,源代码注解中写着:disable backtracking(禁止使用回朔),有熟悉的朋友可以留言板留言告之!

Python正则表达式,看这一篇就够了

10. 常量汇总

9个常量中,前5个(IGNORECASE、ASCII、DOTALL、MULTILINE、VERBOSE)有用途,2个(LOCALE、UNICODE)官方网不建议应用、2个(TEMPLATE、DEBUG)实验男性性功能,不可以依靠。

常量在re常见函数里都可以应用,查询源代码可获知。

Python正则表达式,看这一篇就够了

常量可累加应用,由于常量值全是2的幂次方值,因此是可以累加应用的,累加时请应用 |标记,切勿应用 标记!

Python正则表达式,看这一篇就够了

最终来一张思维脑图总结一下re模块中的常量吧,必须高清图或是xmind文档的同学们可在内容结尾获得。

Python正则表达式,看这一篇就够了
Python正则表达式,看这一篇就够了

re模块函数

re模块有12个函数,猪哥将以作用归类来解读;那样更具备较为性,与此同时也便捷记忆力。

1.查找一个匹配项

查找并回到一个匹配项的函数有3个:search、match、fullmatch,她们的差别分别是:

  1. search: 查找随意地方的匹配项
  2. match: 务必从字符串数组开始匹配
  3. fullmatch: 全部字符串数组与正则表达式彻底匹配

大家再依据具体的源代码实例较为:

实例1:

Python正则表达式,看这一篇就够了

案例1中search函数是在字符串数组中随意部位匹配,只需有合乎正则表达式的字符串数组就匹配取得成功,实际上有两个匹配项,但search函数值回到一个。

match函数是要重新开始匹配,而字符串数组开始多了个英文字母a,因此没法匹配,fullmatch函数必须完全一致,故都不匹配!

实例2:

Python正则表达式,看这一篇就够了

案例2删除了text最开始的字母a,那样match函数就可以匹配啦,而fullmatch函数仍然无法彻底匹配!

实例3:

Python正则表达式,看这一篇就够了

案例3中,大家只留有一段文字,而且与正则表达式一致;这时fullmatch函数总算可以匹配了。

详细实例:

Python正则表达式,看这一篇就够了

留意:查找 一个匹配项 回到的全是一个匹配目标(Match)。

2.查找好几个匹配项

说完查找一项,如今一起来看看查找多种吧,查找多项函数关键有:findall函数finditer函数

  1. findall: 从字符串数组随意部位查找,回到一个目录
  2. finditer:从字符串数组随意部位查找,回到一个迭代器

2个方式基本上相近,只不过是一个是返回列表,一个是回到迭代器。我们知道目录是一次性形成在存储空间中,而迭代器是必须应用时一点一点形成下来的,运行内存应用更优质。

Python正则表达式,看这一篇就够了

假如很有可能出现很多的匹配项得话,提议应用finditer函数,一般状况应用findall函数基本上没啥危害。

3.切分

re.split(pattern, string, maxsplit=0, flags=0)函数:用pattern分离 string ,maxsplit表明较多开展切分频次,flags表明方式,便是上边大家解读的常量!

Python正则表达式,看这一篇就够了

留意:str控制模块也有一个 split函数 ,那这两个函数该怎么选呢?str.split函数作用简易,不兼容正则表达式切分,而re.split适用正则表达式。

有关二者的效率怎样? 猪哥具体检测了一下,在同样信息量的情形下应用re.split函数与str.split函数实行频次实行時间前后对比:

Python正则表达式,看这一篇就够了

根据图中比照发觉,1000次循环系统之内str.split函数更快,而循环系统频次1000次以上后re.split函数显著更快,并且频次越多差别越大!

因此结果是:在 不用正则表达式适用 且 信息量和多次很少 的情形下应用str.split函数更适合,相反则应用re.split函数

注:实际实行時间与数据测试相关!

4.更换

替换关键有sub函数subn函数,她们作用相近!

先一起来看看sub函数的使用方法:

re.sub(pattern, repl, string, count=0, flags=0)函数主要参数解读:repl更换掉string中被pattern匹配的标识符, count表明较大更换频次,flags表明正则表达式的常量。

特别注意的是:sub函数中的入参:repl更换內容既可以是字符串数组,还可以是一个函数哦!假如repl为函数时,只有有一个入参:Match匹配目标。

Python正则表达式,看这一篇就够了

re.subn(pattern, repl, string, count=0, flags=0)函数与re.sub函数作用一致,只不过是回到一个元组 (字符串数组, 更换频次)。

Python正则表达式,看这一篇就够了

5.编译程序正则对象

compile函数 与 template函数将正则表达式的款式编译程序为一个 正则表达式对象 (正则对象Pattern),这一对象与re模块有一样的正则函数(后边大家会解读Pattern正则对象)。

Python正则表达式,看这一篇就够了

template函数compile函数相近,只不过提升了大家以前说的re.TEMPLATE方式,我们可以看一下源代码。

Python正则表达式,看这一篇就够了

6.别的

re.escape(pattern) 可以转译正则表达式中具备特殊含义的标识符,例如:.或是*,举个具体的实例:

Python正则表达式,看这一篇就够了

re.escape(pattern)看起来十分实用省掉了我们自己加转译,可是应用它比较容易发生转译不正确的问题,因此并不建议应用它转译,而提议我们自身手动式转译!

re.purge 函数功效便是消除 正则表达式缓存文件,实际有哪些缓存文件呢?大家一起来看看源代码就晓得它私下里做了 哪些:

Python正则表达式,看这一篇就够了

看方式大约是清理缓存吧,大家再一起来看看详细的实例:

Python正则表达式,看这一篇就够了

猪哥在2个实例中间应用了re.purge函数清理缓存,随后各自较为前后左右实例源代码里边的缓存文件,看一下是不是有转变!

Python正则表达式,看这一篇就够了

7.汇总

一样,最终来一张思维脑图总结一下re模块中的函数吧,必须高清图或是xmind文档的同学们可在结尾获得。

Python正则表达式,看这一篇就够了
Python正则表达式,看这一篇就够了

re模块出现异常

re模块还包括了一个正则表达式的编译程序不正确,在我们得出的正则表达式是一个失效的关系式(便是关系式自身有什么问题)时,便会raise一个出现异常!

大家看看详细的实例吧:

Python正则表达式,看这一篇就够了

图中例子中我们可以见到,在撰写正则表达式中大家多写了一个后引号,这造成实行結果出错;并且是在别的全部实例实行以前,因此表明是在正则表达式编译程序阶段就出错了。

留意:这一出现异常一定是 正则表达式 自身是没用的,与要配对的字符串数组不相干!

Python正则表达式,看这一篇就够了

正则对象Pattern

有关re模块的变量定义、函数、出现异常我们都解读结束,可是彻底必须再讲下正则对象Pattern

1. 与re模块 函数一致

re模块的函数中有一个至关重要的函数compile函数,这一函数可以预编译回到一个正则对象,此正则对象有着与re模块同样的函数,大家一起来看看Pattern类的源代码。

Python正则表达式,看这一篇就够了

即然是一致的,那究竟该用re模块或是正则对象Pattern

并且,有一些同学们很有可能看了re模块的源代码,你就会发现实际上compile函数与 别的re函数(search、split、sub这些) 内部结构启用的是同一个函数,最后或是启用正则对象的函数!

Python正则表达式,看这一篇就够了

换句话说下边 二种编码书写最底层完成 实际上是一致的:

# re函数re.search(pattern, text)# 正则对象函数compile = re.compile(pattern)compile.search(text)

那也有必需应用compile函数获得正则对象再去启用search函数吗?立即启用re.search 是否就可以?

2. 官方网文本文档怎么讲

有关究竟该用re模块或是正则对象Pattern,官方网文本文档是不是有表明呢?

Python正则表达式,看这一篇就够了

官方网文本文档强烈推荐:在多次应用某一正则表达式时建议应用正则对象Pattern以提升重复使用性,由于根据re.compile(pattern)编译程序后的模块级函数会被缓存文件!

3. 具体检测又怎样?

上边官方网文本文档强烈推荐我们在 多次应用某一正则表达式时应用正则对象,那实际情况真的是那样的吗?

大家再评测一下吧

Python正则表达式,看这一篇就够了

猪哥撰写了2个函数,一个应用re.search函数另一个使用compile.search函数,各自(不与此同时)循环系统实行count次(count从1-1万),较为二者的用时!

得到的結果猪哥制作成柱形图:

Python正则表达式,看这一篇就够了

得到的理论依据是:100次循环系统之内二者的速率基本一致,当超过100次能,应用 正则对象Pattern的函数 用时显著更短,因此比re模块要快!

根据具体检测获知:Python 官方网文本文档强烈推荐 多次应用某一正则表达式时应用正则对象函数 基本上确实!

Python正则表达式,看这一篇就够了

常见问题

Python 正则表达式专业知识基本解读结束,最终略微给各位提一提必须留意的点。

1.字节数串 与 字符串

方式和被检索的字符串既可以是 Unicode 字符串 (str) ,还可以是8位字节数串 (bytes)。可是,Unicode 字符串与8位字节数串不可以混合使用!

2.r 的功效

正则表达式应用反斜杠(’’)来表达独特方式,或是把特殊符号转译成一般标识符。

而反斜杠在平常的 Python 字符串里也是有同样的功效,因此就造成了矛盾。

解决方案是针对正则表达式款式应用 Python 的初始字符串表达方式;在含有 ‘r’ 作为前缀的字符串字颜值中,反斜杠无须做一切独特解决。

3.正则查找函数 回到匹配对象

搜索一个匹配项(search、match、fullmatch)的函数返回值全是一个 匹配对象Match,必须根据match.group获得匹配值,这一非常容易忘掉。

Python正则表达式,看这一篇就够了

此外还必须留意:match.group 与match.groups 函数公式的区别!

4.多次重复使用某一正则

假如要多次重复使用某一正则表达式,强烈推荐先应用 re.compile(pattern)函数公式回到一个正则对象,随后重复使用这一正则对象,那样会迅速!

5.Python 正则招聘面试

笔试题目很有可能会碰到必须应用Python正则表达式,但是不容易很难的,大伙儿只需记牢那好多个方式的差别,会恰当应用,基本上问题不大。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月10日 下午2:52
下一篇 2022年5月10日 下午2:53

相关推荐

  • 现在有什么好玩的游戏吗(10款适合长期玩不腻的游戏)

    虽然现在很多企业已经开工,但是在家办公的形式,学生们的开学日期也已经延后很多。也就是说现在有很多朋友在家中其实还是有大量空余时间。今天,为了帮助大家消磨时间,我们推荐给大家10款手机游戏,好玩又方便,有个手机就可以了。 1、纪念碑谷、纪念碑谷2 在很多人心中,纪念碑谷和纪念碑谷2都是无法超越的游戏神作,艺术感极强的画面和诗意的配乐、极佳的声音效果、加上玩法的独特视角让游戏本身赢来了口碑。游戏获得了…

    2022年9月17日
    500
  • 淘宝购物新手入门教程,教你淘宝购物怎样省钱

    淘宝购物有什么技巧: 1、根据店铺的信用 其实这点比较好理解,就是您可以选择店铺级别高的(店铺级别的高低分别是 心–钻–皇冠–金冠)或商城选择信誉级别高的店铺相对级别低的店铺就售后处理相对比较有保障。 缺点:级别高的店铺一般都是客服,每天她们的接的单子都很多,所以态度不如低级别店铺的态度好。价钱相对来说也比较高!个人意见:我个人觉得可以选择 3个钻–2个皇冠 之间的这些店铺,因为他们现在在…

    2022年7月22日
    590
  • 华为千兆路由器哪个好(一款堪称性价比之王的千兆路由器推荐)

    前言:看不见、摸不着,但一旦连接不上就会莫名的着急、不舒服,这就是网络。在这个信息化、智能化社会中网络已然成为了不可或缺。不过无论是家庭还是公司,有线或是无线,网络很难全方位布控,死角在所难免,因此尴尬终归还是有的。今天为大家带来一款华为第三代子母路由器——华为路由器Q2Pro,这款路由器不仅有着又快又稳的网络体验,更是在解决网络死角方面有着最为出众的能力,我们一起来看。 华为路由器Q2Pro是华…

    2022年9月19日
    1650
  • 怎样使用淘宝优惠券,淘宝店铺优惠券使用方法

    近段时间看了很多关于淘宝客的文章跟视频,看着每天都是躺着赚七百到几千块,实在令人行动啊,但是那些人只会讲到一点点,就让你加微信或者私信,然后让你花钱买他的教学资料,其实只要你有资源,朋友多,微信群多,就可以自己一个人同样可以操作。下面我就教大家怎么做。 下面我为大家介绍一款软件比较实用软件,我都一直用它,自己买东西,一年都省不少钱。同样的店铺,产品,不一样的价格,上图。 市面上有很多这样的软件,例…

    2022年6月22日
    700
  • 威图vertu手机官方价格表,揭秘vertu价格昂贵的真相

    说到威图手机能让我想到的就是威图手机的广告语"不顾一切的奢侈"。这个威图手机到底有多奢侈呢?我想其实你对它的了解只是从外表了解到的,那它的奢侈到底多有"内涵"呢? 传统奢侈品行业十分强调稀缺性和精致性,而在手机行业中,唯有VERTU真正将这一特点传承了下来。这主要体现在选材和做工上。在选材上,VERTU费尽心思去寻找各种稀有材料——蓝宝石、红宝石,航天级的钛合金等贵金属,以及各种罕见珍贵的皮料——…

    2022年8月26日
    620
  • 吃鸡神器哪个好(2020公认最好用的一款吃鸡神器)

    关注游戏手柄新品动向的玩家相信对之前颠覆行业的飞智黄/蓝蜂手柄并不陌生,这两款手柄创新采用飞智自主研发的CapAirMapping电容隔空映射技术,即通过手柄模拟手指触控电容屏操作,开创了IOS和Android两大系统平台的手游原生支持的先河,而最近飞智又依托这一技术推出了一款新品手游装备:蜂刺手游按键。这款新装备苹果安卓两大阵营通用,既可单只/成对使用,更可搭配黄/蓝蜂手柄实现左右开弓,无疑将成…

    2022年9月19日
    440
  • 百度推广怎么赚钱,百度赚钱的七种方法

    万事开头难,无论大企业还是小企业都离不开网络推广,这是行业竞争之间的趋势,那么众所周知,竞价推广就是一个烧钱的渠道,没有钱烧怎么带来销售呢,别急,万事都有方法,用少量的钱做百度推广一样可以让盈利翻倍。 做推广、选关键词、写创意、找素材,其实是十年前的老套路了,对于行业之间竞争越来越大,推广效果及数据也不是确定性的了,所以数据的研究是我们做推广不得不深挖的课题。 在广大的推广者中,为了提高最好的展现…

    2022年8月15日
    570
  • 关键词挖掘工具哪个好,好用的关键词挖掘工具大全

    选好关键词对于卖家来说至关重要,本文盘点了一些免费的关键词工具。以下是14种不同的免费关键词研究工具的清单,可以帮助卖家找到合适的关键词。 1、Google关键词规划师 Google广告关键词规划师可用于构建GoogleAdWords搜索广告活动,可用于SEO关键词研究,并可用于提供内容构思。 提示:你需要Google广告帐户才能使用Google的关键词工具。此外,你需要有效的广告活动或在帐户中支…

    2022年8月2日
    710
  • 刷机什么软件最好(一键刷机工具排行榜)

    刷机精灵 刷机精灵,国内领先的安卓手机一键刷机软件,提供MIUI、Flyme等上万款精品ROM下载,支持机型超过500款,还有一键Root、卸载手机自带软件、找回锁屏密码等实用功能。 特点 超级备份一键Root卸载预装应用安全扫描HTC/SONY解锁精品ROM 刷机大师 (原蘑菇云手机精灵),业内最好用的安卓刷机一键刷机工具,内置支持超20000+款手机的ROOT大师,HTC索尼一键官方解锁工具,…

    2022年10月24日
    450
  • 一般摆地摊在哪里进货,新手摆摊5个进货渠道推荐

    今年因为疫情原因,造成很多人失业。在这种情况下,自己创业也是一种不错的选择。 摆地摊,投资少,见效快,风险低。因此,可以作为创业初始项目,赚钱多少是一个目的,学习怎么做生意才是真正有价值的事情。 就当前形势,适合摆地摊的货源,以下几种可以参考: 卖果蔬 人们常吃的水果、蔬菜,是适合摆摊卖的。水果、蔬菜货源好找,一般县级城市都大型有批发市场。选择早晚拿货,白天售卖。适合在小区门口附近或菜市场边上摆地…

    2022年8月30日
    7.2K0

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信