当前位置:首页 > Python > 正文

Python正则表达式(re)教程:字符匹配与文本处理的强大工具 | Python编程指南

Python正则表达式(re)教程

掌握字符匹配与文本处理的强大工具

什么是正则表达式(re)?

正则表达式(Regular Expression, 简称regex或re)是一种强大的文本处理工具,它使用特定模式的字符串来描述、匹配和操作文本。在Python中,我们通过内置的re模块来使用正则表达式。

核心概念:

  • 模式(Pattern): 定义搜索规则的字符串
  • 匹配(Match): 在目标字符串中找到符合模式的内容
  • 元字符(Metacharacters): 具有特殊含义的字符,如., *, +, ?

为什么需要正则表达式?

正则表达式在文本处理中不可或缺,主要原因包括:

高效文本搜索

快速查找复杂模式的字符串,比普通字符串方法更强大

数据验证

验证用户输入(邮箱、电话、密码格式等)

数据提取

从文本中提取结构化信息(日志分析、网页抓取)

文本替换

批量修改文本内容(格式转换、敏感信息过滤)

Python re模块核心函数

函数 描述 返回值
re.match() 从字符串起始位置匹配模式 匹配对象或None
re.search() 扫描整个字符串查找匹配 匹配对象或None
re.findall() 查找所有匹配的子串 字符串列表
re.finditer() 查找所有匹配的子串 迭代器(匹配对象)
re.sub() 替换匹配的子串 替换后的字符串
re.split() 根据模式分割字符串 分割后的列表

常用正则表达式元字符

字符 描述 示例
. 匹配任意单个字符(换行符除外) p.t → pat, pbt, p@t
\d 匹配数字 [0-9] \d{3} → 123, 000, 789
\w 匹配字母数字下划线 [a-zA-Z0-9_] \w+ → hello, Python3, user_name
\s 匹配空白字符(空格、制表符等) \s+ → " ", "\t"
^ 匹配字符串开头 ^Hello → Hello world
$ 匹配字符串结尾 world$ → Hello world
* 匹配0次或多次 ab*c → ac, abc, abbc
+ 匹配1次或多次 ab+c → abc, abbc
? 匹配0次或1次 ab?c → ac, abc
{n} 匹配n次 \d{4} → 2023, 1234
| 或操作 cat|dog → cat, dog
[] 字符集 [aeiou] → 匹配任何元音字母

Python正则表达式实战示例

示例1:验证电子邮件格式

import re

def validate_email(email):
    pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'
    return re.match(pattern, email) is not None

# 测试
emails = ["user@example.com", "invalid.email", "name@domain.org"]
for email in emails:
    print(f"{email}: {validate_email(email)}")

示例2:提取电话号码

import re

text = "联系我们:电话 010-12345678 或 021-87654321,紧急联系 13900112233"
pattern = r'\b\d{3,4}-\d{7,8}\b|\b1[3-9]\d{9}\b'

phones = re.findall(pattern, text)
print("提取的电话号码:", phones)  # 输出: ['010-12345678', '021-87654321', '13900112233']

示例3:替换敏感信息

import re

text = "Visa卡号: 4111 1111 1111 1111 有效期12/25, Master卡: 5500 0000 0000 0004"
pattern = r'\b(?:\d{4}[ -]?){3}\d{4}\b'

# 替换信用卡号
secured_text = re.sub(pattern, "****-****-****-****", text)
print(secured_text)

正则表达式最佳实践

提示: 编写正则表达式时,清晰性和可维护性比简洁性更重要

  • 使用原始字符串(前缀r)避免转义问题:r"\d+"
  • 复杂的正则表达式添加注释re.VERBOSE标志
  • 预编译常用模式:pattern = re.compile(r'\d{4}')
  • 使用非贪婪匹配(*?、+?)避免过度匹配
  • 测试正则表达式:使用在线工具如regex101.com
  • 考虑边界情况:空字符串、特殊字符、Unicode字符

掌握正则表达式,提升文本处理能力

正则表达式是每个Python开发者必备的强大工具。虽然学习曲线较陡峭,但一旦掌握,将极大提升你的文本处理能力。从数据清洗到日志分析,从表单验证到文本挖掘,正则表达式无处不在!

开始在你的项目中实践正则表达式,体验它带来的效率提升吧!

发表评论