Python——正则表达式的使用

我们在处理字符串时,经常会查找符合某些浮渣规则的字符串的需求。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
一、正则表达式语法

  1. 行定位符
    行定位符就是用来描述字符串的便界。“^”表示行的开始;"$"表示行的结尾。如:
^tm 			#表示要匹配字符串tm的开始位置是行头
tm$			#表示要匹配字符串tm的开始位置是结尾

2.元字符

代码说明
.匹配除换行符以外的任意字符
\w匹配字母或数字或下划线
\s匹配任意的空白符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束

3.限定符

限定符说I明
匹配前面的字符零次或一次
+匹配前面的字符一次或多次
*匹配前面的字符零次或多次
{n}匹配前面的字符n次
{n,}匹配前面的字符至少n次
{n,m}匹配前面的字符最少n次,最多m次

4.排除字符
当我们匹配不符合指定字符集合的字符串时,可以用到以下的表达式:

[^a-zA-Z]				#表示用于匹配一个不是字母的字符

5.选择字符
试想以下,如何匹配身份证号码?首先需要了解身份证号码的规则。身份证号码长度为15位或18位,如果位15位,则全部是数字;如果位18位,前17位是数字,最后一位是检验位,可能是数字或字母。
在上述的描述中,包含着条件选择的逻辑,这就要使用选择字符(|)来实现,该字符可理解是“或”,表达式则如下:

(^\d{15}$) | (^\d{18}$) |(^\d{17}) (\d|X|x)$			#表示可以匹配15为数字或者18 为数字,或者17位数字,最后一位可以是数字或者是X或者是x。

6.转义字符
正则表达式中转义字(\)和Python中大同小异,都是将特殊字符(“.”,"?","")等转化普通的字符。
用正则表达式匹配如127.0.0.2.1这样的IP地址,直接使用字符,格式为:

[1-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}					#[1-9]表示在1到9的数字中取任意的数字,{1,3}表示只能是1到3 的长度

但是这样显然不是正确的,因为“.”可以匹配任意的字符,这样匹配的话,会将1271011011这样的字符匹配出来,所以就要用到转义字符(\),格式为:

[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}			#[1-9]表示在1到9的数字中取任意的数字,{1,3}表示只能是1到3 的长度

7.在Python中使用正则表达式的语法
在Python中使用正则表达式时,是将其作为模式字符串使用的。如将匹配不是字符串的一个字符的正则表达式表示为模糊字符串,可以使用下面的代码:

'[^a-zA-Z]'

匹配以字母m开头的单词的正则表达式转换为模式字符串,则不能直接在其两侧添加引号定界符,代码为:

'\\bm\\w*\\b'

注意,由于模式字符串中可能会包含大量的特殊字符和反斜杠,所以需要写为原生字符串,也即是在模式字符串前加R或r.如上面的模式字符串采用原生字符串表示就是:

r'\\bm\\w*\\b'

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值