实用正则表达式模式
常见用例
电子邮件验证
import re
def validate_email(email):
pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
return re.match(pattern, email) is not None
## 电子邮件验证示例
emails = [
'[email protected]',
'invalid.email',
'[email protected]'
]
for email in emails:
print(f"{email}: {validate_email(email)}")
密码强度检查
graph TD
A[密码正则表达式] --> B{标准}
B --> |长度| C[至少8个字符]
B --> |大写字母| D[至少一个大写字母]
B --> |小写字母| E[至少一个小写字母]
B --> |数字| F[至少一个数字]
B --> |特殊字符| G[至少一个特殊字符]
密码验证模式
def check_password_strength(password):
patterns = [
r'.{8,}', ## 最小长度
r'[A-Z]', ## 大写字母
r'[a-z]', ## 小写字母
r'\d', ## 数字
r'[!@#$%^&*()]' ## 特殊字符
]
return all(re.search(pattern, password) for pattern in patterns)
## 测试密码
passwords = [
'weak',
'StrongPass123!',
'NoSpecialChar123'
]
for pwd in passwords:
print(f"{pwd}: {check_password_strength(pwd)}")
日志文件解析
日志模式 |
描述 |
用例 |
\d{4}-\d{2}-\d{2} |
日期提取 |
按日期过滤日志 |
ERROR:\s.* |
错误日志匹配 |
识别错误消息 |
\b\w+\[(\d+)\] |
进程ID提取 |
跟踪特定进程 |
日志解析示例
log_entries = [
'2023-06-15 ERROR: Database connection failed',
'2023-06-15 INFO: Server started [1234]',
'WARNING: Memory usage high'
]
## 提取日期和错误消息
for entry in log_entries:
date_match = re.search(r'\d{4}-\d{2}-\d{2}', entry)
error_match = re.search(r'ERROR:\s.*', entry)
if date_match:
print(f"日期: {date_match.group()}")
if error_match:
print(f"错误: {error_match.group()}")
网页抓取模式
URL提取
text = "Check out https://www.example.com and http://labex.io"
urls = re.findall(r'https?://[^\s]+', text)
print("提取的URL:", urls)
性能考虑因素
- 编译正则表达式模式以供重复使用
- 使用特定模式提高匹配速度
- 避免过于复杂的正则表达式
LabEx建议练习这些实用的正则表达式模式以提高你的文本处理技能。