正则表达式(Regular Expression,简称正则)是一种用于匹配字符串的强大工具。在Python中,使用re
模块可以方便地进行正则表达式操作。无论是数据清洗、文本处理还是Web抓取,正则表达式都能帮我们高效地处理字符串。
正则表达式的基本语法
正则表达式包含了许多特殊字符和语法规则,用于描述字符串的模式。以下是一些常见的语法元素:
.
:匹配任意单个字符(除了换行符)。*
:匹配前面的字符零次或多次。+
:匹配前面的字符一次或多次。?
:匹配前面的字符零次或一次。^
:匹配字符串的开头。$
:匹配字符串的结尾。[]
:匹配方括号内的任意一个字符,例如[abc]
匹配'a'、'b'或'c'。()
:用于分组,提取子串。|
:表示“或”操作符,匹配符号前后的表达式。
Python中的re模块
在Python中,使用re
模块来处理正则表达式。下面是一些常用的函数:
re.match(pattern, string)
:从字符串的起始位置匹配正则表达式。re.search(pattern, string)
:搜索字符串中符合正则表达式的第一个位置。re.findall(pattern, string)
:返回字符串中所有与正则表达式匹配的子串,返回值是一个列表。re.sub(pattern, repl, string)
:替换字符串中匹配正则表达式的部分,返回替换后的字符串。
示例代码
下面,我们通过示例代码来展示如何使用正则表达式处理字符串。
import re
# 1. 匹配手机号
phone_number = "我的电话号码是13812345678,请保持联系"
pattern = r"\d{11}" # 匹配11位数字
match = re.search(pattern, phone_number)
if match:
print("找到手机号:", match.group()) # 输出: 找到手机号: 13812345678
# 2. 提取邮箱地址
text = "请发送邮件到example@mail.com或info@domain.org"
email_pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}"
emails = re.findall(email_pattern, text)
print("找到的邮箱:", emails) # 输出: 找到的邮箱: ['example@mail.com', 'info@domain.org']
# 3. 替换文本中的敏感词
sensitive_text = "这个产品的价格是$100,但我觉得贵得离谱。"
replacement_pattern = r"\$[0-9]+"
censored_text = re.sub(replacement_pattern, "****", sensitive_text)
print("替换后的文本:", censored_text) # 输出: 替换后的文本: 这个产品的价格是****,但我觉得贵得离谱。
# 4. 验证密码强度
password = "Password123!"
password_pattern = r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d@$!%*?&#]{8,}$" # 至少8位,包含大小写字母和数字
if re.match(password_pattern, password):
print("密码强度合格")
else:
print("密码强度不合格")
总结
正则表达式在数据处理中提供了强大的灵活性。在实际使用中,我们可以用它来检索、修饰和解析字符串,极大地提高了效率和准确性。虽然一开始学习正则表达式可能会感到一些困难,但随着实践的深入,我们能够更得心应手地使用它。在掌握了Python的re
模块后,我们可以轻松应对各种复杂的字符串处理任务。