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位字符必须是数字,"$"表示字符串的结尾。