You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Power Automate中从TXT文件提取Service后货币前的数字?

解决Power Automate中提取指定文本的问题

问题分析

你需要从文本中提取Service : 之后、货币(如GBP)之前的数字内容,示例文本为:

Line 3, 4000657 Service : <b>96 140</b>&nbsp;<b>GBP</b>

原公式出错的核心原因有两个:

  1. 匹配关键词不匹配:你用了'Service: '(冒号前无空格),但目标文本里是Service : (冒号前带空格),导致indexOf无法定位到正确起始点,后续计算全部失效。
  2. 结束位置定位错误:你用空格作为结束标记,但目标数字本身包含空格(如96 140),这会导致截取到一半就终止,无法获取完整内容。

解决方案

方法1:修正substring公式

调整匹配关键词,同时用固定的HTML标签作为结束标记,确保截取范围准确:

substring(
    string(outputs('Compose_1_extraire_contenu_du_fichier')),
    add(indexOf(string(outputs('Compose_1_extraire_contenu_du_fichier')), 'Service : <b>'), 13),
    sub(
        indexOf(string(outputs('Compose_1_extraire_contenu_du_fichier')), '</b>&nbsp;<b>'),
        add(indexOf(string(outputs('Compose_1_extraire_contenu_du_fichier')), 'Service : <b>'), 13)
    )
)
  • 'Service : <b>'的长度为13,add(...,13)直接跳转到数字的起始位置。
  • 用'</b>&nbsp;<b>'作为结束标记,确保截取到完整的数字内容。

方法2:使用正则表达式(更适配可变格式)

Power Automate的matches函数支持正则匹配,能更灵活处理格式变化:

first(matches(outputs('Compose_1_extraire_contenu_du_fichier'), 'Service : <b>(.*?)</b>&nbsp;<b>[A-Z]+</b>'))['groups'][0]['value']
  • 正则表达式Service : <b>(.*?)</b>&nbsp;<b>[A-Z]+</b>会精准匹配Service : <b>和货币标签之间的内容,非贪婪模式.*?确保只取目标数字。
  • first(...)['groups'][0]['value']提取匹配到的第一组核心内容。

内容的提问来源于stack exchange,提问作者A.B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 22:12:44