影刀RPA 正则表达式实战:文本提取与替换
影刀RPA 正则表达式实战文本提取与替换署名林焱什么情况用什么RPA采集网页文本后需要提取手机号、邮箱、金额等结构化数据日志文件中需要提取错误时间戳和错误码Excel单元格中混杂了文字和数字需要分离。这些都离不开正则表达式。场景推荐函数特点提取第一个匹配re.search返回Match对象提取所有匹配re.findall返回列表替换匹配文本re.sub支持回调函数分割文本re.split按模式分割怎么做一常用正则模式速查importre# 手机号phonere.search(r1[3-9]\d{9},text)# 邮箱emailre.search(r[\w.-][\w-]\.[\w.-],text)# 身份证号id_cardre.search(r\d{17}[\dXx],text)# 金额带千分位amountre.search(r[\d,]\.?\d*,text)# 日期datere.search(r\d{4}[-/年]\d{1,2}[-/月]\d{1,2},text)# URLurlre.search(rhttps?://[\w./?%-],text)# IP地址ipre.search(r\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3},text)# 中文chinesere.findall(r[\u4e00-\u9fa5],text)二提取数据店群矩阵自动化突破运营极限importre text订单号DD202406150001金额1,299.00下单时间2024年6月15日14:30:25# 提取订单号order_matchre.search(r订单号[:]\s*(\S),text)iforder_match:order_idorder_match.group(1)print(f订单号:{order_id})# 提取金额去掉和逗号amount_matchre.search(r金额[:][¥]\s*([\d,.]),text)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/761123c3058647a3ab433ddc9e8b63e1.png#pic_center)ifamount_match:amountfloat(amount_match.group(1).replace(,,))print(f金额:{amount})# 提取日期时间datetime_matchre.search(r(\d{4}年\d{1,2}月\d{1,2}日)\s*(\d{1,2}:\d{2}:\d{2}),text)ifdatetime_match:datedatetime_match.group(1)timedatetime_match.group(2)print(f日期:{date}, 时间:{time})三批量提取importre text 联系方式 张三 13812345678 zhangsanemail.com 李四 15987654321 lisitest.com 王五 13711223344 wangwuexample.com # 提取所有手机号phonesre.findall(r1[3-9]\d{9},text)print(f手机号:{phones})# 提取所有邮箱emailsre.findall(r[\w.-][\w-]\.[\w.-],text)print(f邮箱:{emails})# 提取姓名手机号分组contactsre.findall(r([\u4e00-\u9fa5])\s(1[3-9]\d{9})\s([\w.-][\w.-]),text)forname,phone,emailincontacts:print(f{name}|{phone}|{email})四文本替换importre text手机号13812345678邮箱testemail.com身份证310101199001011234# 脱敏替换手机号中间4位变****maskedre.sub(r(1[3-9]\d)\d{4}(\d{4}),r\1****\2,text)print(masked)# 输出: 手机号138****5678邮箱testemail.com身份证310101199001011234# 脱敏替换身份证出生年月日变****maskedre.sub(r(\d{6})\d{8}(\d{4}),r\1********\2,masked)print(masked)# 输出: 手机号138****5678邮箱testemail.com身份证310101********1234# 脱敏替换邮箱用户名只保留首字符maskedre.sub(r([\w])[\w.-]*([\w.-]),r\1***\2,masked)print(masked)# 输出: 手机号138****5678邮箱t***email.com身份证310101********1234五复杂场景 - 日志解析importre log_text [2024-06-15 09:30:15] INFO - 用户登录成功 user_id1001 [2024-06-15 09:31:22] ERROR - 数据库连接失败 codeDB_TIMEOUT host192.168.1.100 [2024-06-15 09:32:10] WARN - 请求超时 codeREQ_TIMEOUT urlhttps://api.example.com/data [2024-06-15 09:35:00] ERROR - 文件不存在 codeFILE_NOT_FOUND path/data/report.xlsx # 提取所有错误日志error_patternr\[(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\]\sERROR\s-\s(.?)\scode(\w)errorsre.findall(error_pattern,log_text)fortimestamp,message,codeinerrors:print(f时间:{timestamp}, 错误:{message}, 代码:{code})# 提取IP地址ipsre.findall(rhost(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}),log_text)print(fIP地址:{ips})# 提取URLurlsre.findall(rurl(https?://[\w./?%-]),log_text)print(fURL:{urls})完整流程网页数据清洗提取importre# yd_input: raw_textraw_textyd_input.get(raw_text,)# 清洗HTML标签clean_textre.sub(r[^],,raw_text)# 去除多余空白clean_textre.sub(r\s, ,clean_text).strip()# 提取结构化数据result{phones:list(set(re.findall(r1[3-9]\d{9},clean_text))),emails:list(set(re.findall(r[\w.-][\w-]\.[\w.-],clean_text))),urls:list(set(re.findall(rhttps?://[\w./?%-],clean_text))),amounts:[],dates:[],id_cards:list(set(re.findall(r\d{17}[\dXx],clean_text))),}# 提取金额并转为数字amount_matchesre.findall(r[¥]?\s*([\d,]\.?\d*)\s*元,clean_text)foramtinamount_matches:try:result[amounts].append(float(amt.replace(,,)))except:pass# 提取日期date_matchesre.findall(r\d{4}[-/年]\d{1,2}[-/月]\d{1,2},clean_text)result[dates]date_matches# 清洗后的文本result[clean_text]clean_text yd_outputresult有什么坑坑一贪婪匹配导致多提取现象想提取div内容/div中的内容结果提取了从第一个div到最后一个/div之间的所有内容。原因.*默认贪婪匹配尽可能多匹配。解决用.*?非贪婪匹配importre htmldiv内容A/divspan中间/spandiv内容B/div# 错误贪婪匹配resultre.findall(rdiv(.*)/div,html)print(result)# [内容A/divspan中间/spandiv内容B] ❌ 多了# 正确非贪婪匹配resultre.findall(rdiv(.*?)/div,html)print(result)# [内容A, 内容B] ✓坑二特殊字符未转义现象想匹配文本中的价格100元但正则写价格100元匹配不到。temu店群自动化报活动案例原因正则中.匹配任意字符虽然这里恰好能匹配到但如果文本是价格?100元?是正则特殊字符。解决用re.escape转义importre# 要匹配的文本包含特殊字符keyword价格?(含税)escapedre.escape(keyword)# 自动转义特殊字符print(escaped)# 价格\?\(含税\)text价格?(含税)100元matchre.search(escapedr[:]\s*([\d,.]),text)ifmatch:print(match.group(1))# 100坑三中文匹配范围不准现象用\w匹配中文时有时成功有时失败。原因\w在默认模式只匹配[a-zA-Z0-9_]不匹配中文。需要加re.UNICODE标志Python3默认开启。解决用Unicode范围匹配中文importre texthello世界123# 匹配中文chinesere.findall(r[\u4e00-\u9fa5],text)print(chinese)# [世界]# 匹配中文英文数字all_wordsre.findall(r[\u4e00-\u9fa5\w],text)print(all_words)# [hello, 世界123]# 匹配中文标点punctuationre.findall(r[\u3000-\u303f\uff00-\uffef],text)坑四re.sub替换时的反向引用现象想把2024-06-15替换为2024/06/15但写re.sub(r\d-(\d)-(\d), r\d/\1/\2, text)不工作。原因替换字符串中\d是字面量不是正则。需要用分组引用。解决importre text日期2024-06-15# 正确用分组引用resultre.sub(r(\d{4})-(\d{2})-(\d{2}),r\1/\2/\3,text)print(result)# 日期2024/06/15# 常见分组引用# \1, \2, \3... 引用第N个分组# \g1, \g2 等价写法更清晰![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0aaa30638a684d6eb5cde42dccc368eb.png#pic_center)# 用回调函数做更复杂的替换defformat_date(match):yearmatch.group(1)monthmatch.group(2)daymatch.group(3)returnf{year}年{int(month)}月{int(day)}日resultre.sub(r(\d{4})-(\d{2})-(\d{2}),format_date,text)print(result)# 日期2024年6月15日

相关新闻

WPS Office 2026免费下载安装指南与功能实测

WPS Office 2026免费下载安装指南与功能实测

这次我们来看 WPS Office 2026 的免费下载和安装流程。作为金山办公最新推出的版本,WPS 2026 在兼容性、云服务和本地化功能上都有明显提升,最关键的是个人版依然免费。如果你需要一款能替代 Microsoft Office、支持多端同步、启动速度快且资源占用低的办…

2026/7/21 19:59:30 阅读更多 →
Python+SQLite赛事管理系统开发:从需求分析到数据建模实战

Python+SQLite赛事管理系统开发:从需求分析到数据建模实战

在实际开发中,我们经常需要处理一些非技术性的项目标题或需求描述,这些描述可能来自产品经理、运营同事或用户反馈。它们往往缺乏技术细节,但开发团队需要将其转化为可执行的技术方案。本文将以一个示例项目标题“(S1E5&#xff0…

2026/7/25 2:06:37 阅读更多 →
深入解析SPI多引脚模式与高级配置:从基础到MibSPI实战

深入解析SPI多引脚模式与高级配置:从基础到MibSPI实战

1. 项目概述与核心价值 在嵌入式系统开发中,串行外设接口(SPI)是连接微控制器与各类传感器、存储器和显示模块的“血管”。它简单、高效,一个时钟加两根数据线就能搞定通信,这是它最初吸引我的地方。但当你真正开始设计…

2026/7/22 14:45:20 阅读更多 →

最新新闻

独立开发者如何利用 Taotoken 实现多模型应用的快速上线

独立开发者如何利用 Taotoken 实现多模型应用的快速上线

独立开发者如何利用 Taotoken 实现多模型应用的快速上线 对于独立开发者或小型团队而言,将大模型能力集成到自己的应用中,是提升产品智能水平的关键一步。然而,从模型选型、API接入到后续的稳定性维护,每一步都可能消耗开发者宝贵…

2026/7/25 3:43:48 阅读更多 →
AI辅助教材编写:提升效率与质量的全流程方案

AI辅助教材编写:提升效率与质量的全流程方案

1. 教材编写的新范式:AI辅助创作的价值解析三年前我接手一套职业教育教材的编写任务时,经历了长达半年的资料收集、内容整理和反复修改的痛苦过程。如今同样的工作量,借助AI工具可以在两周内完成初稿,且质量显著提升。这种效率跃迁…

2026/7/25 3:43:48 阅读更多 →
Linux命令行从入门到实战:核心命令、高频场景与工程实践指南

Linux命令行从入门到实战:核心命令、高频场景与工程实践指南

最近在带新人熟悉服务器环境时,发现很多刚接触 Linux 的同学面对黑乎乎的命令行窗口会感到无从下手。其实,无论是日常运维、开发调试,还是学习编程,掌握 Linux 命令行都是绕不开的硬技能。网上的命令列表很多,但往往只给命令和参数,缺少“为什么用”和“怎么组合”的实战…

2026/7/25 3:43:48 阅读更多 →
Gemini 3.6 Flash:30分钟构建专属AI创意工具的完整指南

Gemini 3.6 Flash:30分钟构建专属AI创意工具的完整指南

如果你还在为每个创意项目重复造轮子,或者觉得现有的AI工具总是差那么一点"定制感",那么Gemini 3.6 Flash可能正是你需要的解决方案。这不是又一个通用的AI助手,而是一个能够让你快速构建专属创意工具的平台。过去,想要…

2026/7/25 3:43:48 阅读更多 →
微软Copilot架构解析:AI商业化与分层计费技术

微软Copilot架构解析:AI商业化与分层计费技术

1. 项目概述:AI时代的企业级变现逻辑重构微软在AI应用层的商业化探索正在重塑整个企业软件市场的价值分配体系。作为全球最大的企业软件服务商之一,微软通过Copilot产品线将AI能力深度整合到Office、Windows、Azure等核心产品中,创造了一种全…

2026/7/25 3:43:48 阅读更多 →
AI模型计算预算评估:从性能到安全的多维度实践指南

AI模型计算预算评估:从性能到安全的多维度实践指南

在AI模型开发和部署的实践中,我们常常面临一个看似简单却影响深远的问题:如何准确评估不同计算资源配置对模型性能和安全性的影响?这个问题不仅关系到项目预算的分配效率,更直接决定了AI系统能否在实际应用中稳定运行。最近在评估…

2026/7/25 3:42:48 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻