Power BI 查询 - 将分隔符之间的文本提取到新列

Posted

技术标签:

【中文标题】Power BI 查询 - 将分隔符之间的文本提取到新列【英文标题】:Power BI Query - Extract text between delimiters to a new column 【发布时间】:2016-09-05 07:50:03 【问题描述】:

我有一个表格,其中包含以下格式的文本列:

"随机文本[ABC-######]其他随机文本"

对于包含“[ABC-”的所有行,我想将“ABC-######”提取到新列,其中###### 是随机数,至少 4 个数字,但可以是更多。

这是我迄今为止的工作:

= Table.AddColumn(#"Changed Type", "Custom", each if Text.Contains([TextColumn], "[ABC") then "FOUND" else "NotFound")

但我无法提取带有数字的子字符串。

谁能帮帮我? 谢谢 dk

【问题讨论】:

一些澄清问题:方括号是任何字符串的一部分吗?任何可能的字符串是否包含“ABC-”哪个正则表达式匹配任何源字符串? "^\w+ [ABC-\d4,] \w+$", "^.*[ABC-\d4,].*$", "^.*\[[a-cA-C ]-\d4,\].*$" 谢谢。我解决了:each if Text.Contains([TextColumn], "[ABC-") then (Text.Range((Text.Range([TextColumn], (Text.PositionOf([TextColumn], "[ABC-", Occurrence.First))+1, 14)), 0, (Text.PositionOf((Text.Range([TextColumn], (Text.PositionOf([TextColumn], "[ABC-", Occurrence.First))+1, 14)), "]", Occurrence.First)))) else "None") 它可能看起来不是最好的解决方案,但它正在工作,可能有计算更好的解决方案。我不需要提取“[”“]”,只需要提取 ABC 和字符,直到后面的“]”。 @d82k 你的回答看起来很棒!在 *** 上建议,如果您找到问题的答案,请自行添加答案 ***.com/help/self-answer 。顺便说一句,如果速度很重要,也许你可以避免使用Text.Contains() 函数,只需调用一次Text.PositionOf([TextColumn], "[ABC-");如果未找到子字符串,PositionOf 将返回 -1。 【参考方案1】:

不太复杂的版本

let
    tbl = #table("TextColumn", 
        "qwer",
        "qwer [ABC-1234] asdf",
        "qwer [ABC-1234]",
        "[ABC-1234] asdf"
    ),
    AddColumn = Table.AddColumn(tbl, "ExtractedNumber", each try Splitter.SplitTextByEachDelimiter("[ABC-","]")([TextColumn])1 otherwise "None")
in
    AddColumn

应该是这样的

【讨论】:

【参考方案2】:

解决方法:

= Table.AddColumn(#"Changed Type", "Custom", each 
if Text.Contains([TextColumn], "[ABC-") then
(Text.Range((Text.Range([TextColumn], (Text.PositionOf([TextColumn], "[ABC-", Occurrence.First))+1, 14)), 0, (Text.PositionOf((Text.Range([TextColumn], (Text.PositionOf([TextColumn], "[ABC-", Occurrence.First))+1, 14)), "]", Occurrence.First))))
else "None")

按照 cmets 的建议

 Text.PositionOf

会导致更快。

谢谢

【讨论】:

以上是关于Power BI 查询 - 将分隔符之间的文本提取到新列的主要内容,如果未能解决你的问题,请参考以下文章

Power Query - 循环提取分隔符之间的文本

将文本文件中的多个查询粘贴到 Power BI Desktop

从 Power BI 桌面/查询中的单元格中提取短语

Power BI笔记(一)

Power BI R 脚本正则表达式仅返回第一个匹配项

power bi如何抓取连续的分秒