在Power Query中使用正则表达式

方法:

PQ本身没有正则,但是M语言不能我们可以借助其他语言:一种是在PBID中使用R.Execute由R调用,另一种就是使用Web.Contents由php调用,本文介绍后者。
php脚本如下:

<?php
if(urldecode(@$_GET["fx"]) =="r"){
echo "["".
preg_replace("/".$_GET["pattern"]."/".@$_GET["mod"] ,@$_GET["str2"] ,@$_GET["str1"])
.""]";
}else{
preg_match_all("/".$_GET["pattern"]."/".@$_GET["mod"] ,@$_GET["str1"] ,$out);
echo json_encode($out);
}
 ?>

如果懂环境配置的话可以保存到本地,然后localhost调用,不懂的话也没关系,我已上传至服务器,新建自定义函数调用即可:

re= (re,text)=>Json.Document(Web.Contents("https://pqfans.com/pq/re?pattern="&Uri.EscapeDataString(re)&"&str1="&text)){0}

 

示例:

2 Replies to “在Power Query中使用正则表达式”

    1. 首先这是由PQ传递参数给PHP运算,运算完再返回给PQ,两种语言之间相互传递就需要一定时间。
      其次,如果用的是我服务器上的脚本,相当于每调用一次就要访问一次网站,本身就存在延迟,我还用的是海外服务器。如果你本地配置环境的话会快一点。
      这个方法只是提供一种思路,效率必然不会太高。
      另外最近群里研究出了用Web.Page调用正则的方法,效率还不错,过段时间整理好了发。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注