正则表达式实战例子
正则表达式实战例子
1. 验证电子邮件地址
定义一个合理的电子邮件格式,并检查给定的字符串是否符合这个模式。
import redef 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属性。
import rehtml_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的形式。
import redef 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 Nonephones = ["(123) 456-7890", "123.456.7890", "1234567890", "123-456-7890"]
formatted_phones = [format_phone_number(p) for p in phones]
print(formatted_phones)
4. 替换敏感信息
掩盖或删除这些敏感信息。这里我们用正则表达式来识别并替换信用卡号。
import redef 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_textlog_entry = "Customer paid with card number 4111-1111-1111-1111."
masked_log = mask_credit_card(log_entry)
print(masked_log)
5. 解析日志文件
使用正则表达式来解析这些日志条目,提取出IP地址、时间戳和请求路径等信息。
import relog_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. 验证电子邮件地址 定义一个合理的电子邮件格式,并检查给定的字符串是否符合这个模式。 import redef is_valid_email(email):# 定义电子邮件格式的正则表达式pattern r^[a-zA-Z0-9_.-][a-zA-Z0-9-]\.[a-zA-Z0-9-.]$return bool(re.match(…...
Hadoop不同版本的区别
免费springboot,vue,springcloudalibaba视频,有兴趣可以看看 <!-- springboot,springboot整合redis,整合rocketmq视频: --> https://www.bilibili.com/video/BV1nkmRYSErk/?vd_source14d27ec13a473…...
QtCreator UI界面 菜单栏无法输入中文
如下图红色所示的区域,直接输入是无法输入中文的: 解决方法:在右边的属性值里输入即可 也可以参考这位同学的解决方法:友情链接...
java switch及其新特性
switch是什么 在Java中,switch语句是一种多分支选择结构,它允许程序根据一个表达式的值从多个代码块中选择执行哪一个。switch语句通常比多个if-else语句更清晰、更易读。 Java switch语句的基本语法: switch (expression) {case value1:/…...
E卷-货币单位换算(100分)
货币单位换算 问题描述 在一个多国货币记账本中,记录了若干条不同货币的金额。现在需要将这些金额全部转换成人民币分(fen),并进行汇总。每条记录可能包含单独的元、单独的分,或者元与分的组合。转换时,需要考虑不同货币之间的汇率关系。 要求将这些货币全部换算成人民…...
什么是MMD Maximum Mean Discrepancy 最大均值差异?
9多次在迁移学习看到了,居然还是Bernhard Schlkopf大佬的论文,仔细看看。 一.什么是MMD? 1. MMD要做什么? 判断两个样本(族)是不是来自于同一分布 2.怎么做?(直观上)…...
沐风老师3DMAX摄相机阵列插件使用方法
3DMAX摄相机阵列插件,从网格对象或样条线的顶点法线快速创建摄相机阵列。该插件从网格的顶点或样条线的节点获取每个摄影机的位置和方向。 3DMAX摄相机阵列插件支持目前3dMax主流的物理相机、标准相机、VRay物理相机。 【版本要求】 3dMax 2015及更高版本 【安装方…...
Java Web 开发学习中:过滤器与 Ajax 异步请求
一、过滤器 Filter: 过滤器的概念与用途 在一个庞大的 Web 应用中,有许多资源需要受到保护或进行特定的预处理。过滤器就像是一位智能的守卫,站在资源的入口处,根据预先设定的规则,决定哪些请求可以顺利访问资源&…...
数据结构 (36)各种排序方法的综合比较
一、常见排序方法分类 插入排序类 直接插入排序:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。希尔排序:是插入排序的一种改进版本,先将整个待排序的记录序列分割成为…...
使用vue搭建不需要打包的前端项目
需求详情:用户不要项目进行打包,开发还是选用vue2,且需要便于上手 项目目录 >api 存放api.js,主要是前端用到的接口 >css >>>fonts 存放页面需要的字体文件 >>>1.css 存放所有css文件 >data 存放echarts…...
发布订阅者=>fiber=>虚拟dom
文章目录 vue的响应式原理-发布订阅者模式vue3 响应式原理及优化fiberfiber 与 虚拟dom vue的响应式原理-发布订阅者模式 Vue响应式原理概述 Vue.js的响应式原理是其核心特性之一。它使得当数据发生变化时,与之绑定的DOM元素能够自动更新。其主要基于数据劫持和发布…...
Python-计算机中的码制以及基础运算符(用于分析内存)
记录python学习,直到学会基本的爬虫,使用python搭建接口自动化测试就算学会了,在进阶webui自动化,app自动化 python基础2-码制 计算机中的码制原码(True Form)反码(Ones Complement)…...
yum 离线软件安装
适用范围 支持YUM软件管理的操作系统: 银河麒麟 服务器操作系统V10统信服务器操作系统V20CentOS 系列 准备 准备一台可以连接互联网并且与离线安装的操作系统相同版本的操作系统,包括指令集类型相同。 安装下载工具 查询是否已经安装下载工具 yum…...
【C语言】17. 数据在内存中的存储
文章目录 一、整数在内存中的存储二、⼤⼩端字节序和字节序判断1、什么是⼤⼩端?2、为什么有⼤⼩端?3、练习1)练习12)练习23)练习34)练习45) 练习56)练习6 三、浮点数在内存中的存储1、浮点数的…...
二叉树概述
目录 一、二叉树的基本结构 二、二叉树的遍历 1.前序 2.中序 3.后序 4.层序遍历 三.计算二叉树的相关参数 1.计算节点总个数 2.计算叶子节点的个数 3.计算树的高度 4.计算第k层的子树个数 5.查找树中val为x的节点 四.刷题 1.单值二叉树 2.检查两棵树是否相同 3.一…...
【开源免费】基于SpringBoot+Vue.JS图书进销存管理系统(JAVA毕业设计)
博主说明:本文项目编号 T 082 ,文末自助获取源码 \color{red}{T082,文末自助获取源码} T082,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...
惠普M126a连接共享打印机故障0x000006ba,系统不支持请求的命令,print spooler重复停止
故障说明:直连惠普M126a打印机正常打印,通过共享连接的报故障。 目前已知有三种故障: 1、0x000006ba报错2、系统不支持请求的命令3、print spooler重复停止(或者,print spooler没有停止依然报故障) 解决方…...
Chainlit集成LlamaIndex实现一个通过用户聊天对话的酒店预定系统
Agent 简介 “Agent”是一个自动推理和决策引擎。它接受用户输入/查询,并为执行该查询做出内部决策,以便返回正确的结果。关键的代理组件可以包括但不限于: 把复杂的问题分解成小问题选择要使用的外部工具+调用工具的参数计划一系列的任务将以前完成的任务存储在内存模块中…...
计算机网络之网络层超详细讲解
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络之网络层超详细讲解 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论💌 …...
代码随想录算法训练营day51|动态规划part13
回文子串 回文子串这里的递推式不太一样,dp[i] 和 dp[i-1] ,dp[i 1] 看上去都没啥关系。所以要回归到回文的定义 而我们发现,判断一个子字符串(字符串下标范围[i,j])是否回文,依赖于,子字符串…...
Tao-8k与卷积神经网络结合:图像描述生成与视觉问答实战
Tao-8k与卷积神经网络结合:图像描述生成与视觉问答实战 你有没有想过,让AI不仅能“看见”图片,还能像人一样“理解”并“描述”它?比如,给一张公园里小孩踢球的照片,AI不仅能认出里面有小孩和足球…...
Qwen3-0.6B-FP8实操手册:多轮对话记忆机制与上下文控制技巧
Qwen3-0.6B-FP8实操手册:多轮对话记忆机制与上下文控制技巧 1. 引言:为什么你需要关注对话记忆? 想象一下,你跟一个朋友聊天,聊了十分钟后,你问他:“我们刚才说到哪了?”他一脸茫然…...
OpCore-Simplify:让黑苹果配置从专业难题变为点击操作,3步完成自动化EFI构建
OpCore-Simplify:让黑苹果配置从专业难题变为点击操作,3步完成自动化EFI构建 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你…...
矩阵LED与矩阵按键的扫描驱动原理及实现
1. 矩阵LED与矩阵按键的硬件结构解析 第一次接触矩阵LED和矩阵按键时,我完全被那些交叉的线路搞晕了。后来才发现,它们的本质就是行和列的交叉网络。想象一下围棋棋盘,横线是行,竖线是列,每个交叉点就是一颗棋子——在…...
爱毕业aibye智能改写工具推荐五个方法,30%重复率的论文快速达标不是问题
嘿,大家好!我是AI菌。今天咱们来聊聊一个让无数学生头疼的问题:论文重复率飙到30%以上怎么办?别慌,我这就分享5个实用降重技巧,帮你一次搞定,轻松压到合格线以下。这些方法都是我亲身试验过的&a…...
RNA-seq测序深度指南:从研究目的到数据量换算全解析
1. RNA-seq测序深度:为什么它如此重要? 做RNA-seq实验的朋友们,最常被问到的问题就是"该测多少数据量?"。这个问题看似简单,实际上直接关系到实验的成败。我见过太多人因为测序深度选择不当,导致…...
HyperDroid深度体验:安卓秒变Win11桌面的秘密武器
1. HyperDroid初体验:当安卓遇上Win11的奇妙化学反应 第一次打开HyperDroid时,我的手机屏幕瞬间变成了熟悉的Windows 11界面,那种感觉就像把电脑桌面装进了口袋。任务栏、开始菜单、甚至窗口的圆角设计都完美复刻,连动态磁贴的亚克…...
5G NR Rel16测量上报事件深度解析:从A1到I1的触发机制与应用场景
1. 5G测量上报事件的核心作用 当你用手机刷视频时,有没有想过为什么从客厅走到阳台,视频还能流畅播放不卡顿?这背后其实是5G网络在默默执行"接力赛"——通过基站间的无缝切换保障连续通信。而测量上报事件就是这场接力赛的发令枪&a…...
SFM3304热式流量传感器嵌入式驱动开发指南
1. Sensirion SFM3304 流量传感器技术解析与嵌入式驱动开发指南Sensirion SFM3304 是一款基于热式原理的高精度、低功耗数字质量流量传感器,专为医疗呼吸设备、工业过程控制及实验室气体分析等对响应速度、零点稳定性与长期可靠性要求严苛的应用场景设计。该器件采用…...
大模型入门指南:收藏这份小白学习资源,轻松掌握AI新趋势!
本文介绍了AI大模型的主要特征,包括泛化性、通用性和涌现性,并详细阐述了云侧大模型和端侧大模型的不同类型和应用场景。文章还列举了我国AI大模型的典型案例,如科大讯飞讯飞星火认知大模型、百度文心一言大模型、阿里巴巴通义千问大模型等&a…...
