影刀RPA文本数据提取方法一:正则表达式提取
影刀RPA文本数据提取方法一正则表达式提取作者林焱 | 适合人群需要从杂乱文本中精确提取结构化数据的新手什么情况用什么你从网页上抓下来一段文本长这样商品名称iPhone 15 Pro 价格8999 销量1.2万 发布时间2025-10-01 联系方式13800138000 邮箱supportapple.com你要的只是价格里的数字和联系方式其他都是干扰信息。用「获取元素信息」指令拿到的是整个文本下一步怎么把你要的数据抠出来正则表达式Regular Expression简称正则就是干这个的——用一种特殊的字符串模式从文本里匹配并提取你想要的内容。什么情况用正则提取目标数据有固定的格式比如手机号11位、邮箱包含数据混在一大段文本里用XPath单独提取不到你需要做数据清洗比如把8999变成8999怎么做第一步理解正则的基本语法不用背用的时候查就行。常用符号符号含义例子\d匹配数字\d匹配连续的数字\w匹配字母、数字、下划线\w匹配一个单词.匹配任意字符除了换行a.c匹配abc、“a1c”*重复0次或多次a*匹配、“a”、“aa”…重复1次或多次a匹配a、“aa”…?重复0次或1次a?匹配“或a”[]匹配括号里的任意一个字符[0-9]等价于\d()分组提取括号里的内容(\d)只提取数字部分第二步在影刀里使用正则提取影刀RPA里有两个指令可以用正则「正则表达式匹配」— 判断文本是否匹配某个模式「正则表达式提取」— 从文本里提取符合模式的内容拼多多店群自动化上架方案案例1从价格文本里提取数字文本价格8999元含运费目标提取8999操作步骤拖入「正则表达式提取」指令源字符串选包含价格文本的变量正则表达式(\d)元提取结果保存到变量price_num解释正则(\d)元— 匹配人民币符号(\d)— 分组1匹配1个或多个数字这就是你要提取的内容元— 匹配元字案例2提取手机号文本请联系13800138000或13900139000咨询目标提取所有手机号正则1[3-9]\d{9}解释1— 手机号以1开头[3-9]— 第二位是3-9\d{9}— 后面跟9位数字合起来就是11位手机号在影刀里用「正则表达式提取全部匹配」指令会返回一个列表[13800138000,13900139000]案例3提取邮箱地址文本客服邮箱supportapple.com投诉邮箱complainapple.com正则[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}这个正则可以匹配大多数邮箱地址格式。第三步处理提取结果正则提取的结果通常是一个列表因为可能匹配到多个。如果只要第一个匹配结果提取结果变量[0] ← 取列表第一个元素如果要遍历所有匹配结果用「ForEach」指令循环提取结果变量逐个处理有什么坑坑1正则写对了但提取不到可能是转义问题在影刀的变量里写正则\d、\w这些符号需要写成\\d、\\w加一个反斜杠。因为影刀的变量是字符串类型字符串里的\是转义字符要表示真正的\需要写\\。正确写法\\d变量里而不是\d坑2.不匹配换行符默认情况下正则里的.不匹配换行符。如果你的文本有多行用.*可能匹配不到跨行的内容。解决方案在影刀的正则提取指令里勾选「多行模式」或「单行模式」让.匹配换行符。坑3贪婪匹配导致提取多余内容TEMU店群如何管理运营正则默认是贪婪匹配——尽量多地匹配。比如文本div内容A/divdiv内容B/div正则div.*/div贪婪匹配结果div内容A/divdiv内容B/div整个都匹配了如果你只想匹配第一个div用非贪婪匹配div.*?/div在影刀里在*后面加?就是非贪婪匹配。坑4中文标点符号导致匹配失败网页上的文本有些标点符号是中文的比如、。、但你的正则里写的是英文标点,、.、:。解决方案正则需要同时覆盖中英文标点或者用\p{Punctuation}如果影刀支持的话通常不支持。更简单的方法先把文本里的标点统一替换成英文再做正则提取。坑5正则很强大但也很慢如果你要对上万条数据做正则提取速度会比普通的字符串操作比如contains()慢很多。解决方案如果数据量很大先用简单的字符串操作做第一轮筛选再用正则做精细提取。总结正则提取的核心用模式匹配代替固定文本查找。最常用的三个正则\d— 提取数字1[3-9]\d{9}— 提取手机号[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}— 提取邮箱下一篇讲文本数据提取方法二JSON解析提取应对那些数据藏在JSON里的场景比如Ajax接口返回的数据。作者林焱