Power query正则表达式的使用

power query本身不能直接使用正则表达式,我们是通过web类的函数Web.Page()构建借用了js的正则表达式。有关js正则表达式我在这里就不介绍了。入门学习可以去网址:http://www.runoob.com/js/js-regexp.html。今天我们要解决的问题是提取出下表中每个字符串长度刚好为3的数值,返回所有的结果(见结果列)。

Power query正则表达式的使用_第1张图片
今天我们就领略一下power query的魅力吧。首先简单介绍一下Web.Page()函数语法:Web.Page(html as text) as table。

这个函数只有一个参数,就是网页字符串。然后其返回值为table,就是一个表格。我自己的实现代码如下:

let
    源 = Excel.CurrentWorkbook(){[Name="表3"]}[Content],
    fx=(x)=>try Web.Page("")
    {0}[Data]{0}[Children]{1}[Children][Text]{0} otherwise null,
    res=Table.AddColumn(源,"结果",each fx([data]))
in
    res

 我的思路比较暴力,就是匹配出一个字符串中的所有数值,然后找出其中长度为3的字符串。最后power query中返回的结果如下图:

Power query正则表达式的使用_第2张图片

         跟篮球哥学习了一下思路,更简单。就是利用两次正则匹配..第一次替换掉长度大于等于4的数值字符串。剩下的那就只有<=3的长度字的数值符串了。这时候只需要匹配长度为3的数值了,就行了。Web.Page()部分代码如下:

Web.Page("")
                         [Data]{0}[Children]{0}[Children]{1}[Text]{0}

    后记:

         我今天在用js的 for in 遍历数组时候发现有bug。验证索引的时候会产生一个input值。我也不知道为什么。然后用 for(var i=0;i

你可能感兴趣的:(Power,Query)