7天精通python正则表达式(3大学习步骤)


“ 正则表达式,在我们工作中经常被用来检索、替换那些符合我们需求的文本。”

01 生活中的正则表达式

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

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

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

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

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

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

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

02 正则表达式的相关知识

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

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

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

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

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

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

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

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

要匹配变长的字符菜鸟学it零基础7天精通python正则表达式,在正则表达式中, * 表示任意个字符(包括零个),+ 表示至少一个字符,? 表示零个或一个字符菜鸟学it零基础7天精通python正则表达式(正则表达式怎么办?表达式的几种办法!!), {n} 表示n个字符,{n,m} 表示n-m个字符,[] 表示范围。我们来看一个例子:

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

菜鸟学it零基础7天精通python正则表达式_《精通正则表达式》_精通正则表达式 豆瓣

上面的表达式中:

^:表达了一行的起始位置。
^[1-9]:表示了必须以数字1-9开开头的字符串。
{4,11}:表示了4到11个字符 。
$:表示一行的结束位置,\d$表示必须以数字结尾。

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

菜鸟学it零基础7天精通python正则表达式

03 Python中的正则表达式

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

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

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

下面是re包的常用函数:

菜鸟学it零基础7天精通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 标志:

菜鸟学it零基础7天精通python正则表达式

今天就没有每日小测了菜鸟学it零基础7天精通python正则表达式,大家有兴趣的话可以去网上搜索一下有很多相关的测试题。


免费领取: 只要加微信,回复“入门视频”,即刻获取 全网最系统,最容易入门的的Web前端入门全套视频,C语言入门全套入门视频,大数据全套入门视频,PhP全套入门视频,Pathon全套入门视频,Java全套入门视频!!!微信号:18370228235 ,立即领取!
版权申明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ892482387,本站将立刻清除。

分享到