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

使用Power Query匹配字符串中的单词并保留匹配顺序

Power Query 多关键词匹配并按文本中出现顺序返回

要实现按关键词在目标文本中出现的先后顺序返回匹配结果,不能直接沿用原问题中按关键词列表顺序输出的逻辑,得通过「记录匹配位置→按位置排序→提取关键词」的流程来实现,具体步骤如下:

步骤1:定义关键词列表

先把需要匹配的关键词存成一个列表,比如:

let
    keywords = {"Adult", "Children", "Infant"}
in
    keywords

步骤2:添加自定义列实现匹配排序

在你的数据表中添加自定义列,使用以下M代码(假设目标文本列名为TextColumn):

= let
    currentText = [TextColumn],
    // 遍历关键词,记录每个匹配项的位置和关键词
    matchedList = List.Transform(keywords, (kw) => [
        Keyword = kw,
        Position = Text.PositionOf(currentText, kw, Occurrence.First)
    ]),
    // 过滤掉未匹配的项(Position为null)
    filtered = List.Select(matchedList, each [Position] <> null),
    // 按出现位置从小到大排序
    sorted = List.Sort(filtered, (a,b) => a[Position] - b[Position]),
    // 提取排序后的关键词并拼接成字符串
    result = Text.Combine(List.Transform(sorted, each [Keyword]), ", ")
in
    result

代码逻辑说明

  • Text.PositionOf(currentText, kw, Occurrence.First):获取当前关键词在文本中第一次出现的起始位置,未匹配到则返回null
  • List.Select:只保留匹配成功的关键词条目
  • List.Sort:根据关键词的出现位置从小到大排序,确保输出顺序和文本中出现顺序一致
  • Text.Combine:把排序后的关键词用逗号加空格连接成最终结果

示例效果

比如文本为Children and Adult时,Children的位置是0,Adult的位置是10,排序后先提取Children再提取Adult,最终返回Children, Adult,完全符合需求。

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:23:18