gpt4 book ai didi

javascript - BigQuery 在 Javascript UDF 中使用 Regex 转义动态值

转载 作者:行者123 更新时间:2023-12-05 04:26:09 25 4
gpt4 key购买 nike

我正在尝试在带有 JS UDF 的 BigQuety 中使用带有动态变量的正则表达式,但是转义存在一些问题,我不知道如何解决它。

CREATE TEMP FUNCTION `replaceRegex`(org STRING, to_replace STRING, replace_to STRING)
RETURNS STRING LANGUAGE js AS
"""
re_string = `\\b${to_replace}\\b`
let re = new RegExp(re_string, 'gi');
return org.replace(re, replace_to);
""";

SELECT replaceRegex('The quick brown fox jumps over the lazy dog', 'fox', 'bear')

这个版本不工作。

但是我改变了:\\b${to_replace}\\b到:

re_string = /\\bfox\\b/

然后它就起作用了。

但我不能硬编码我的正则表达式,它必须是动态值传递。

最佳答案

在三重引号字符串的开头添加 r 可以使您的代码正常工作,因为它将所有内容都视为原始字符串,请参阅 reference .您的代码应该是:

CREATE TEMP FUNCTION `replaceRegex`(org STRING, to_replace STRING, replace_to STRING)
RETURNS STRING LANGUAGE js AS
r"""
re_string = `\\b${to_replace}\\b`
let re = new RegExp(re_string, 'gi');
return org.replace(re, replace_to);
""";

SELECT replaceRegex('The quick brown fox jumps over the lazy dog', 'fox', 'bear')

测试:

enter image description here

关于javascript - BigQuery 在 Javascript UDF 中使用 Regex 转义动态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73097111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com