更多课程 选择中心

Python培训
美国上市教育机构

400-111-8989

Python培训

零基础Python教程-正则表达式

  • 发布:Python培训
  • 来源:小秋月白
  • 时间:2019-07-04 16:13

身边的正则表达式

对于正则表达式,很多人第一反应就是晦涩难懂。因为刚开始学习的时候,觉得它毫无规律的可言就是一串标点符号和字母组成的一个不知道用来干什么的表达式。

网上说的什么XX分钟精通正则完全是骗人的。本文旨在让大家对正则表达式有一些基础的概念与了解,能看得懂简单的正则表达式,写得出简单的正则表达式。至于精通,那就只能在日常开发过程中慢慢摸索深入理解了。

在讲正则表达式之前,先给大家讲个例子。假设你正在用手机浏览电子书(正看到男主收异火,寻宝物,炼丹药,斗魂族踏上逆袭之路的时候,又或者女主兜兜转转又来到了自己命中注定的男主身边的时候。)这时,突然你手滑了……又回到了整本书的首页。这时你会怎么办呢?大多数人应该有如下三种办法:

从首页一页一页往目标页翻。这种情况虽然可以,但是等到你翻到那一页的时候,估计你都忘了前面的剧情讲了什么。这种我们列为下选。

还有一种就是你记得看的章节,然后先跳转到章节首页,然后再一页页往后翻,这种虽然可以但是看书看的入神的时候谁还记得自己看第几章啊。这种我们列为中选。

最后一种,就是根据关键字进行筛选。假设你正看到男主角创立了“无尽火域”,或者女主角与男主角解开了种种矛盾重归于好。那么此时你就可以根据文章中的关键字对整本书进行检索。这种又有利于你回忆自己看过的剧情,又快速的方法。我们列为上选。

读到这里,很多朋友应该已经明白了。最后一种通过关键字检索到我们所需求的文本就是正则表达式的一种——精确匹配。

正则表达式的相关知识

在我们日常开发中,正则通常被用来校验用户输入的内容是否符合逻辑。如:校验邮箱、生日、手机号、身份证号等等。

那么接下来我们就来一起学习一下它。因为正则表达式也是用字符串表示的,所以,我们要首先了解如何用字符来描述字符。

在正则表达式中,如果直接给出字符,就是精确匹配。用\d可以匹配一个数字,\w可以匹配一个字母或数字,所以:

'00\d'可以匹配'007',但无法匹配'00A';

'\d\d\d'可以匹配'010';

'\w\w\d'可以匹配'py3';

. 可以匹配任意字符。例如:

pytho. 可以匹配python、pythoa、pytho7、python!等。

要匹配变长的字符,在正则表达式中, * 表示任意个字符(包括零个),+ 表示至少一个字符,? 表示零个或一个字符, {n} 表示n个字符,{n,m} 表示n-m个字符,[] 表示范围。我们来看一个例子:

^[1-9]\d{4,11}$

上面的表达式中:

^:表达了一行的起始位置。

^[1-9]:表示了必须以数字1-9开开头的字符串。

{4,11}:表示了4到11个字符 。

$:表示一行的结束位置,\d$表示必须以数字结尾。

下表是对正则表达式中的一些基本符号进行的总结。

正则表达式

Python中的正则表达式

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

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

由于Python中也使用 ‘\’ 作为转义字符。因此,建议大家在字符串前面加上r,用来表示原始字符串。举例:

# 不加 r使用 \转义

s = 'ABC\\-001'

 # Python的字符串

# 对应的正则表达式字符串变成:

# 'ABC\-001'

# 加 r 使用原始字符串s = r'ABC\-001'

 # Python的字符串

# 对应的正则表达式字符串不变:

# 'ABC\-001'

下面是re包的常用函数:

零基础Python教程

re.match与re.search的区别

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

#!/usr/bin/python

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

正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。如 re.I | re.M 被设置成 I 和 M 标志。

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:零基础Python教程-Python中的循环
下一篇:零基础Python教程-多进程

零基础Python教程-多进程

Python中字典合并的实现方法

python中的logging日志模块

零基础Python教程-多线程

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省