python正则表达式最详解

1. 正则表达式基础

正则表达式是一种用于描述模式的特殊字符序列。使用正则表达式,我们可以很方便地在文本中搜索、匹配、替换特定的字符串。Python提供了re模块来支持正则表达式的相关操作。

1.1 正则表达式的基本符号

在正则表达式中,有一些特殊符号代表着特定的含义。以下是一些常用的符号:

.: 匹配任意字符,除了换行符。

^: 匹配字符串的开头。

$: 匹配字符串的结尾。

*: 匹配前面的字符零次或多次。

+: 匹配前面的字符一次或多次。

?: 匹配前面的字符零次或一次。

{n}: 匹配前面的字符恰好n次。

{n, m}: 匹配前面的字符至少n次,最多m次。

\: 转义符,用于匹配特殊字符。

1.2 正则表达式的常用方法

在Python的re模块中,常用的函数有以下几个:

re.match(pattern, string): 从字符串的开头开始匹配,如果匹配成功则返回一个匹配对象,否则返回None。

re.search(pattern, string): 在整个字符串中搜索第一个满足条件的子字符串,如果匹配成功则返回一个匹配对象,否则返回None。

re.findall(pattern, string): 返回一个列表,包含所有满足条件的非重叠子字符串。

re.sub(pattern, repl, string): 将字符串中满足条件的子字符串替换为指定的字符串。

re.split(pattern, string): 根据正则表达式的模式分割字符串,返回一个分割后的列表。

2. 正则表达式示例

下面通过几个示例来演示正则表达式的使用。

2.1 匹配手机号码

手机号码的格式通常是11位数字,以1开头。我们可以使用正则表达式来匹配手机号码。

import re

pattern = r'^1\d{10}$'

phone_numbers = ['13012345678', '13887654321', '120123456789']

for phone_number in phone_numbers:

if re.match(pattern, phone_number):

print(phone_number + '是合法的手机号码')

else:

print(phone_number + '不是合法的手机号码')

运行结果:

13012345678是合法的手机号码

13887654321是合法的手机号码

120123456789不是合法的手机号码

从上面的示例可以看出,我们使用了正则表达式的"^1\d{10}$"来匹配手机号码,其中"^1"表示必须以1开头,"\d{10}"表示接下来的10位字符必须是数字,"$"表示字符串的结尾。

后端开发标签