Regexp in Power Query using JavaScript(用JavaScript实现Power Query中的Regexp)
问题描述
我需要Regexp,而M/Power Query没有本机支持。我发现解决方案的几个变体都围绕着同样优秀的Web.Page&;JavaScript理念-Biccauntant,Hugoberry。
由于JavaScript的限制,我不得不采用它们(生成的代码如下所示)。
主要问题是,JavaScript对字符串变量有自己的凝灰岩限制--不可能在其中使用""。
我的变体解决了这个问题,但我不是JS方面的专业人员,所以主要问题是-我怀疑""问题并不是唯一的问题。
因此,我的问题是--在使用Regexp时,有没有人看到PQ&;JavaScript"协作"方面的其他问题?关于字符串的其他缺陷,或者其他什么?我知道Regexp有它自己的转义规则(这不仅是JavaScript请求,而且是Regexp本身),所以Regexp本身的转义不在问题的讨论范围之内。也就是说,在将正则表达式作为函数参数传递之前,应该正确地对其进行转义。换句话说,假设如果用户想要使用带""的正则表达式,则必须使用"\",我的函数会将其转换为"\\",并将其作为Regexp表达式传递给JavaScript。
对于PQ用户-事实证明,该解决方案的性能至少对于数百行来说是相当好的。但不要忘记,无法在Power BI服务中使用该功能,这仅适用于PowerBI Desktop和Excel。
代码:
(text as nullable text, pattern as nullable text) as logical =>
let
l = List.Transform({text, pattern}, each Text.Replace(_, "", "\")),
t = Text.Format("<script>document.write(new RegExp('#{1}').test('#{0}'))</script>", l),
w = Web.Page(t),
d = w[Data]?{0}?[Children]?{0}?[Children]?{1}?[Text]?{0}?,
result = text <> null and (pattern = null or (if d <> null then Logical.FromText(d) else error "Regular expression or text are not supported by JavaScript."))
in
result
推荐答案
我知道Java脚本,但我不知道Powerbi/PowerQuery,因此此答案可能不完整。
字符串中还有其他需要转义的字符。
对于单引号的字符串文字,和
'
需要转义,一些空格字符(如换行符)也需要转义。在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String上有一个逃生列表。其中一些是可选的,但我不确定具体是哪些。我认为你永远不需要有十六进制数字的任何一个。我说的是'
需要转义,而不是"
,但如果您使用双引号字符串("#{0}"
),则情况正好相反。
除此之外,我不能告诉您PowerQuery需要进行哪些转义。事实上,我很惊讶您的字符串文字"\"
按预期工作。
总之,它应该如下所示(并且可以随时更正我的PowerQuery语法错误):
// Define function escapeString which inserts before each or ' and then applies the escape sequences
,
, v, , and f.
let
l = List.Transform({text, pattern}, each escapeString(_)),
...
这篇关于用JavaScript实现Power Query中的Regexp的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:用JavaScript实现Power Query中的Regexp


基础教程推荐
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 动态更新多个选择框 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01