影刀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/20 9:17:39 阅读更多 →
Python+SQLite赛事管理系统开发:从需求分析到数据建模实战

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

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

2026/7/20 9:18:48 阅读更多 →
深入解析SPI多引脚模式与高级配置:从基础到MibSPI实战

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

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

2026/7/20 9:16:33 阅读更多 →

最新新闻

AI驱动的全栈开发到底难在哪?3个真实项目复盘,90%开发者踩过的5个致命陷阱

AI驱动的全栈开发到底难在哪?3个真实项目复盘,90%开发者踩过的5个致命陷阱

更多请点击: https://codechina.net 第一章:AI驱动的全栈开发到底难在哪?3个真实项目复盘,90%开发者踩过的5个致命陷阱 AI驱动的全栈开发表面是“前后端模型”的简单叠加,实则考验工程化能力、领域理解深度与跨栈协同…

2026/7/21 1:50:13 阅读更多 →
PON系统中ONU注册优化:动态PLOAM消息组包技术解析

PON系统中ONU注册优化:动态PLOAM消息组包技术解析

1. 项目背景与核心价值在无源光网络(PON)系统中,ONU(光网络单元)注册过程是决定网络性能的关键环节。烽火通信与飞思灵微电子联合研发的这项专利技术,通过优化PLOAM(物理层操作管理与维护&#…

2026/7/21 1:50:13 阅读更多 →
实验驱动AI开发:在生产环境中实时迭代模型

实验驱动AI开发:在生产环境中实时迭代模型

1. 项目概述:当AI开发变成一场高空实时组装“Experiment-Driven AI Development: Building the Plane While Flying”——这个标题不是修辞,是我在过去三年带过7个工业级AI落地项目后,最常在晨会白板上画的那个潦草草图:一架机翼刚…

2026/7/21 1:50:13 阅读更多 →
AI实验驱动开发:实时迭代与数据闭环的工程实践

AI实验驱动开发:实时迭代与数据闭环的工程实践

1. 项目概述:当AI开发变成一场实时校准的空中作业“Experiment-Driven AI Development: Building the Plane While Flying”——这个标题不是修辞,而是我过去三年在三家不同规模AI团队里反复验证过的现实状态。它直指当前工业级AI落地最核心的矛盾&#…

2026/7/21 1:50:13 阅读更多 →
前端工程师必看:AI编程浪潮下,5大主流框架在代码生成、智能补全、调试协同中的实测性能对比(附Benchmark数据)

前端工程师必看:AI编程浪潮下,5大主流框架在代码生成、智能补全、调试协同中的实测性能对比(附Benchmark数据)

更多请点击: https://kaifayun.com 第一章:AI编程浪潮下的前端工程范式重构 AI编程工具的深度集成正从根本上重塑前端开发的工作流、协作边界与质量保障机制。传统以手动编码、人工评审和阶段性测试为核心的工程范式,正在向“提示驱动开发&a…

2026/7/21 1:50:12 阅读更多 →
Python项目打包发布全指南:从setup.py到PyPI

Python项目打包发布全指南:从setup.py到PyPI

1. Python项目打包发布概述 作为一名Python开发者,你可能已经编写了一些实用的脚本或库,想要分享给其他开发者使用。将Python项目打包并发布到PyPI(Python Package Index)是最规范的做法。通过setuptools和pip工具链,…

2026/7/21 1:49:12 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/20 5:56:42 阅读更多 →

月新闻