Python 从入门到实战16(正则表达式语法)

        我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

上篇文章我们通过举例学习了字符串一些操作说明。今天讨论一下正则表达式的语法。也是经常会用到的。

1、正则表达式简介

正则表达式:regular expression ,简称:regex 或者RE,又称规则表达式,它不是某种语言所特有的。

在处理字符串时,经常会涉及查找符合某些复杂规则的字符串,正则表达式就是描述这些规则的工具。

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

2、行定位符

行定位符用来描述字符串的边界。“^”表示行的开始,“$”表示行的结尾。

如: ^tm

表示:要匹配的字符串tm开头,如tm1234  可以匹配,若是TOtm123就不匹配

如:tm$   表示以tm结尾

3、元字符说明

上面所讲到的“^”和“$”就属于元字符,还有其它:

元字符

说明

元字符

说明

.

匹配除换行符以外的任意字符

\b

匹配单词的的开始或者结束

\w

匹配字母、数字、下划线或汉字

^

匹配字符串的开始

\s

匹配任意的空白符

$

匹配字符串的结束

\d

匹配数字

举个例子: \bbaidu\w*\b  ,这里是匹配以字母baidu开头的字母,然后\w 为任意的字母或者数字、或者汉字等,*这里指任意数量,就是限定符

4、限定符的说明

上面的例子\w*  是匹配任意数量的数字或者字母。若是想匹配特定说了的数字,该如何表示呢?如匹配10位的qq 号:  ^\d{10}$

下面列出常用的限定符:

限定符

说明

举例

匹配前面的字符0次或者一次

 your? 表达式匹配your ,也匹配youa

+

匹配前面的字符1次或者多次

go+gle 匹配gogle 到goo…gle

*

匹配前面的字符0次或者多次

go*gle 匹配ggle 到goo…gle

{n}

匹配前面的字符n次

go{2}gle 只匹配google

{n,}

匹配前面的字符n次或以上

go{2}gle 匹配google 到goo…gle

{n,m}

匹配前面的字符n次d到m次

go{2,4}gle匹配google 、gooogle、goooogle

5、字符类的匹配

没有预定义元字符的字符集合如何进行匹配呢?如含有某些特定的字母如元音字母:a\e\i\o\u,可以直接用方括号来匹配,如[]a,e,I,o,u]

如:[0-9]代表的含义和\d是一致的

6、排除字符

不符合某些字符可以使用[^+字母表示]

如:[^a-z A-Z] 表示排查字母的意思

7、选择字符

若是包含多个条件进行选择的逻辑,怎么书写表达式呢?可以使用|来连接

如:身份证的表达式

(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|x|X$)  即表示身份证由15个数字,或者18个纯数字,或者17个数字+x或者加X   进行匹配

8、转义字符:\

为什么要用到转义字符?如我们要使用IP地址,用正则表达式匹配127.0.0.1这样的格式。当然,我们不能直接使用“.”,因为“.”是元字符可以匹配除换行符意外的任意字符。

需要使用转义字符“\”,正则式:

[1-9]{1-3}\.[0-9]{1-3}\.[0-9] {1-3}\.[0-9] {1-3}

9、分组

分组可以使用括号()来实现,如上面的匹配127.0.0.1的例子

[1-9]{1-3}\.[0-9]{1-3}\.[0-9] {1-3}\.[0-9] {1-3}

可以改写成:[1-9]{1-3}(\.[0-9]{1-3}){3}

上面的例子就达到了分组,也即是子表达式。

(\.[0-9]{1-3}){3}  :即为对分组(\.[0-9]{1-3})  重复了三次操作

10、python 中使用正则式语法

在python中使用正则表达式时,将其作为模式字符串使用的。例如,匹配一个非字母字符的正则表达式转换为模式字符串:’[^a-z A-Z]’

若是匹配以p开头的单词的正则表达式转换为模式字符串,

如写成:’\bp\w*\b’  这个表达显然时不正确的,因为没有进行转义(’\\bp\\w*\\b’)。

为了避免大量的转义字符要写,python中可以写成原生字符串,即在模式字符串前加r或者R。如上面的例子:’\\bp\\w*\\b’  >写成  r’\bp\w*\b’  即可。

今天先写学习到这里了,每天进步一点点。今天也要加油啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立黄昏粥可温

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值