正则表达式实战例子

正则表达式实战例子

1. 验证电子邮件地址

定义一个合理的电子邮件格式,并检查给定的字符串是否符合这个模式。

python 复制代码
import re

def is_valid_email(email):
    # 定义电子邮件格式的正则表达式
    pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
    return bool(re.match(pattern, email))

# 测试
emails = ["example@example.com", "invalid-email", "another.valid+email@example.co.uk"]
for email in emails:
    print(f"{email}: {is_valid_email(email)}")
2. 提取网页中的所有链接

使用正则表达式来查找HTML文档中所有的<a>标签及其href属性。

python 复制代码
import re

html_content = """
<a href="http://example.com/page1">Link 1</a>
<a href='http://example.com/page2'>Link 2</a>
<a href="javascript:void(0)">Invalid Link</a>
"""

# 匹配带有href属性的a标签,并提取href值
link_pattern = re.compile(r'<a\s+(?:[^>]*?\s+)?href=[\'"]([^\'"]*)[\'"][^>]*>')
links = link_pattern.findall(html_content)

print("Extracted Links:", links)
3. 电话号码格式化

电话号码都转换成XXX-XXX-XXXX的形式。

python 复制代码
import re

def format_phone_number(phone):
    # 去除非数字字符,并确保长度正确
    cleaned = re.sub(r'\D', '', phone)
    if len(cleaned) == 10:
        return f"{cleaned[:3]}-{cleaned[3:6]}-{cleaned[6:]}"
    else:
        return None

phones = ["(123) 456-7890", "123.456.7890", "1234567890", "123-456-7890"]
formatted_phones = [format_phone_number(p) for p in phones]
print(formatted_phones)
4. 替换敏感信息

掩盖或删除这些敏感信息。这里我们用正则表达式来识别并替换信用卡号。

python 复制代码
import re

def mask_credit_card(text):
    # 替换所有连续16位数字的序列(信用卡号)为"****-****-****-1234"
    masked_text = re.sub(r'\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b',
                         '****-****-****-1234', text)
    return masked_text

log_entry = "Customer paid with card number 4111-1111-1111-1111."
masked_log = mask_credit_card(log_entry)
print(masked_log)
5. 解析日志文件

使用正则表达式来解析这些日志条目,提取出IP地址、时间戳和请求路径等信息。

python 复制代码
import re

log_line = '127.0.0.1 - - [10/Oct/2023:13:55:36 +0000] "GET /index.html HTTP/1.1" 200 2326'

# 解析日志条目的正则表达式
log_pattern = re.compile(r'(\S+) (\S+) (\S+) \[(.*?)\] "(.*?)" (\d{3}) (\d+|-)')

match = log_pattern.match(log_line)
if match:
    ip_address, _, _, timestamp, request, status_code, size = match.groups()
    print(f"IP Address: {ip_address}")
    print(f"Timestamp: {timestamp}")
    print(f"Request: {request}")
    print(f"Status Code: {status_code}")
    print(f"Size: {size}")
相关推荐
唐可盐1 小时前
如何进行mysql慢查询日志设置以及日志管理与分析
运维·数据库·mysql
梁辰兴1 小时前
汽车租赁系统数据库 E-R 图设计
数据库·ea·汽车租赁系统·er图设计·er
李宥小哥2 小时前
ElasticSearch04-高级操作
数据库·microsoft
白云如幻2 小时前
MySQL数据表的管理
数据库·mysql
ssxueyi2 小时前
Flink CDC实时同步mysql数据
大数据·mysql·adb·flink·flink cdc
上辈子杀猪这辈子学IT3 小时前
【Hive数据仓库】Hive部署、Hive数据库操作(增删改查)、表操作(内部表、外部表、分区表、桶表)
大数据·数据库·数据仓库·hive·hadoop
web安全工具库3 小时前
探索 Python 中的字典:序列解包与复杂数据结构
前端·数据库·python
万能的编程语言3 小时前
ORACLE逗号分隔的字符串字段,关联表查询
数据库·oracle
33三 三like3 小时前
数据库基础知识点(选填/问答题)
数据库·oracle
jjw_zyfx3 小时前
Django结合websocket实现分组的多人聊天
数据库·websocket·django