Python合集之Python正则表达式(二)

    在上一节中我们了解到了Python正则表达式中的行定位符、元字符及限定符。今天我们继续分享相关的正则表达式。

1.字符类

正则表达式查找数字和字母是很简单的,因为已经有了对应这些字符集合的元字符(“\d”、"\w"),但是如有要匹配没有预定字符的字符集合(比如:元音字母a e i o u),应该怎么办?

很简单,只需要在方括号里列出他们就行了,像[aeiou]可以匹配任何一个英文元音字母,[.?!]匹配标点符号(. ? !)。也可以轻松的指定一个字符范围,像[0-9]代表的含义与“\d”就是完全一致的,一位数字;同理[a-z0-9A-Z]完全等于“\w”。

注:要想匹配给定字符串中任意一个汉字,可以使用[\u4e00-\u9fa5];如果要匹配连续多个汉字,可以使用[\u4e00-\u9fa5]+。

2.排除字符

上面讲的是匹配符合指定字符集合的字符串,如果要匹配不符合指定字符集合的字符换,正则表达式提供了 ^ 字符。这个字符除了表示行的开始,放在方括号中,表示排除的意思。例如:

[^a-zA-z]

该表达式用于匹配一个不是字母的字符。

3.选择字符

如果匹配的身份证号码,首先我们了解一下身份证号码的规则。身份证号码长度为15位或者18位,如果是15位,则全部是数字,如果为18位,前17位是数字,最后一位检验位,可能为数字或者字母X。

在上面的描述中,包含着条件选择逻辑,这就是需要使用选择字符(|)来实现,该字符可以理解为 “或”,匹配身份证的表达式可以写成如下:

(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|X|x)$

4.转义字符

正则表达式中的转义字符(\)和Python中的大同小异,都是将特殊字符(如 . ? \ 等)变为普通的字符,举一个IP地址的实例,用正则表达式匹配诸如“127.0.0.1”格式的IP地址,如果直接使用点字符,格式为:

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

这显然是不对的,因为 .可以匹配一个任意字符,这时不仅是127.0.0.1这样的IP,连127101011这样的字符串也会被匹配出来,所以在使用 .时,需要使用转义字符(\)。修改后的上面例子的正则表达式应为:

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

注:括号在正则表大师中也算是一个字符

5.分组

(six|four)th

上面这个表达式的意思是匹配单词 sixth或者 fourth,如果不使用小括号,那么就变成了匹配单词six和 fourthle 。

小括号的第二个作用是分组,也就是子表达式,如:

(\.[0-9]{1,3}){3},就是对分组(\.[0-9]{1,3})进行重复操作。

花絮:

本期的Python 字符串正则表达式就分享到这里,下期我们将继续分享Python字符串正则表达式的相关知识,感兴趣的朋友可以关注我。

同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。

posted @ 2021-03-04 20:41  @睦  阅读(137)  评论(0编辑  收藏  举报