【发布时间】: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-\d{4,}] \w+$", "^.*[ABC-\d{4,}].*$", "^.*\[[a-cA-C ]-\d{4,}\].*$"
-
谢谢。我解决了:
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 你的回答看起来很棒!在 StackOverflow 上建议,如果您找到问题的答案,请自行添加答案 stackoverflow.com/help/self-answer 。顺便说一句,如果速度很重要,也许你可以避免使用
Text.Contains()函数,只需调用一次Text.PositionOf([TextColumn], "[ABC-");如果未找到子字符串,PositionOf 将返回 -1。
标签: powerbi powerquery