☰
影刀RPA新手教程:正则表达式入门——采集数据提取的第一把刀
2026/10/8 23:02:09 网站建设 项目流程

影刀RPA新手教程:正则表达式入门——采集数据提取的第一把刀

用影刀RPA把商品页采集下来只是第一步,真正的脏活是从"到手价:¥1,299.00(限时)"这种文本里把1299抠出来、从一整段订单详情里把手机号和快递单号分开捞出来。我第一次做拼多多订单整理流程时,不会正则,愣是写了二十多个If判断去切字符串,切了三天,后来学会正则,同样的事二十分钟搞定。

正则表达式就是"按照一定规律,从文本中寻找子文本"的工具,官方文档里叫它是从文本中提取内容的方法,影刀RPA把它做成了开箱即用的指令,完全不用写代码。

这篇教程面向没碰过编程的新手,用一个订单文本提取的案例,把正则的第一把刀磨快。

认识影刀与正则:先花十分钟把环境搭好

还没装影刀RPA的,去官网下载客户端,安装时记得把Chrome或Edge浏览器插件一起装上,网页采集全靠它。打开客户端后左侧是指令仓库,顶部工具栏是运行调试按钮,右侧是指令详情面板。

正则相关的指令都在"数据处理"分类下,最核心的一个叫【从文本中提取内容】。找到它,后面全程就用它和几个文本指令。

新手必装作用优先级
影刀RPA客户端跑流程的主体必装
浏览器插件网页元素捕获必装
XPath Helper插件调试定位表达式建议装

正则表达式入门:先认识八个符号

正则看着像乱码,其实常用的就八个符号。下面这张表是官方文档里给出的常用操作符,我按使用频率重排了顺序:

符号含义例子
\d一位数字\d匹配5
+前面字符1次或多次\d+匹配1234
.任何单个字符a.c匹配abc
*前面字符0次或多次ab*匹配a、ab
?前面字符0次或1次已?匹配已或空
[]字符集取一个[0-9]等价\d
^ $开头/结尾^¥匹配以¥开头
()分组(¥\d+)整体捕获

背不下没关系,你只需要记住一个组合:\d+表示"一串连续数字"。这个组合能解决新手80%的提取需求,价格、销量、库存、订单号里的数字部分,全是它。

从文本中提取内容:官方指令的每个参数

双击【从文本中提取内容】指令,右侧面板的参数我一个一个讲:

  • 文本内容:填待提取的文本或直接引用字符串变量
  • 提取方式:内置了提取数字、提取手机号码、提取Email地址、提取身份证号四个快捷选项,还有一个"提取自定义内容"可以填自己的正则
  • 只找第一个匹配项:勾上只返回第一个结果,取消勾选则返回所有匹配项的列表
  • 忽略大小写:匹配字母时不管大小写
  • 样本内容验证及提取结果:这个框最良心,填一段测试文本立刻看到提取效果,不用跑流程

我的习惯是先在样本框里调通正则,再接上真实变量。这个样本框就是新手的正则练习场,比任何教程都直观。

有一个官方文档里专门标注的机制要记住:对于包含分组的正则表达式,影刀默认返回匹配到的第一个捕获分组。意思是如果你的正则里有一对括号,返回的就是括号里匹配到的部分,而不是整个匹配结果。这个特性超好用,比如货号:(\w+)会直接返回货号本身,不带"货号:"前缀。

变量类型:提取结果的正确接法

提取结果接进变量时,类型要对上。只找第一个匹配项时返回字符串,取消勾选后返回列表。用If判断提取是否成功时,判空写法是变量=="",新手容易写成和None比较,跑起来永远走不进分支。

提取设置返回类型后续处理
只找第一个字符串直接落表
全部匹配列表ForEach列表循环逐条处理

字符串变量还可以用索引取单个字符、用拼接组合新文本,这些基础操作在影刀RPA里都是指令化的,拖【文本拼接】指令就行,不用写代码。

流程控制:批量提取的标准骨架

订单批量提取的流程骨架长这样,我把每步用什么指令写清楚:

  1. 【打开Excel】打开订单汇总表
  2. 【读取区域数据】把详情列读成列表变量
  3. 【ForEach列表循环】遍历每一条订单文本
  4. 循环体内连放三个【从文本中提取内容】:手机号、快递单号、金额
  5. 【写入行数据到表格】把三个结果写回新列
  6. 循环外【保存并关闭Excel】

手机号这种有固定格式的,直接用内置的"提取手机号码"选项,不用自己写。快递单号各家长度不一,就得自定义正则了。

数据处理:四条拿来就用的经典正则

官方文档给过一组经典表达式,我挑四条做采集最常用的,附上我自己的使用场景:

# 提取整数(价格、销量、库存) -?\d+ # 提取中国境内邮政编码(收货地址分析) [1-9]\d{5} # 提取国内固定电话(客服记录清洗) \d{3}-\d{8}|\d{4}-\d{7} # 提取中文字符(把英文数字剥掉只留中文) [\u4e00-\u9fa5]

[\u4e00-\u9fa5]这条我多说一句,做商品标题清洗时,把品牌词、规格、颜色混在一起的标题拆开,先用它把纯中文部分抽出来做分类特征,效果立竿见影。

金额提取要处理千分位,[\d,]+\.\d{2}能匹配"1,299.00"这种格式,提取后用【文本替换】把逗号删掉再转数字。

网页自动化:正则在定位环节的助攻

正则不只用在文本处理,元素编辑里所有属性都支持通配符和正则表达式。比如页面某些按钮的文本在"新闻"和"直播"之间随机切换,把正则(直|新)设给全局变量,元素属性绑这个变量,一个元素就能匹配两种状态。

这个机制在需要采集的页面结构乱、class名带随机后缀时特别救命,具体写法我会在进阶篇专门展开,新手先知道有这条路。

鼠标键盘图像:提取不了就OCR兜底

有些价格是图片渲染的,获取文本拿到的是空串。这时用【截图】加OCR文字识别指令把图变文字,再交给正则提取。顺序永远是:先试文本提取,文本拿不到再上OCR,因为OCR有识别错误率,正则提取没有。

键盘输入场景里,往输入框填内容前如果里面有旧数据,用【键盘按键】发Ctrl+A再Delete,比模拟点击全选稳。

进阶技能:Python里的正则进阶

影刀RPA的Python模式里,正则可以走标准库re模块,比指令更灵活。re.findall返回所有匹配的列表,re.search返回第一个匹配的对象,配合分组可以一次抽多个字段:

# 输入:一段订单文本,输出:手机号和金额两个变量importre text="收货人手机13812345678,实付款¥1299.00,中通快递单号75123456789012"phone=re.search(r'1\d{10}',text).group()# 手机号:11位,1开头money=re.search(r'¥([\d,]+\.\d{2})',text).group(1)# group(1)取括号分组track=re.search(r'[A-Za-z]*\d{12,}',text).group()print(phone,money,track)

不过说真的,非技术出身的话,普通场景用【从文本中提取内容】指令完全够,Python留给复杂逻辑。

平台实战与系统联动:串成一个每日订单机器人

把这套提取逻辑嵌进完整流程:拼多多后台定时采集订单列表,正则拆字段,【写入行数据到表格】汇总,最后【发送飞书消息】把当日订单数和异常单推给群里。配合客户端的计划任务每天早上9点自动跑一遍,我现在的订单日报从采集到通知全程无人工。

工程化上把它拆成三个子流程:采集、提取、通知,命名用"模块_动作"格式,改任何一个环节都不碰其他两个。

速查表与常见报错

现象原因解法
提取结果为空列表正则太严格或文本有空格换行样本框里逐段调试
返回值带前缀正则没加分组括号把要的部分用()包起来
数字被拆散\d遇到逗号断开千分位用[\d,]+
If判断总不成立拿字符串和数字比较先转同类型再比
中文匹配失败忘了用[\u4e00-\u9fa5]中文范围替换[a-z]

延伸阅读

订单提取机器人完整流程、我整理的正则速查清单,放在代码仓库 home.linyan.cloud,可以直接参考改造。官方文档里"正则表达式"词条附了完整的操作符表和案例截图,搭配着看补齐细节。

正则这把刀磨快之后,你会发现采集回来的数据突然都变得听话了,以前要人肉整理一下午的表格,现在一个循环加三行正则就干完。


#影刀RPA #RPA自动化 #正则表达式 #数据采集 #数据处理

作者:林焱

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询