Estoy tratando de usar expresiones regulares con variable dinámica en BigQuety con JS UDF, pero hay un problema con el escape y no sé cómo resolverlo.
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')Esta versión no funciona.
Pero cambio: \\b${to_replace}\\b a:
re_string = /\\bfox\\b/Entonces funciona.
Pero no puedo codificar mi expresión regular, tiene que pasar un valor dinámico.
Agregar r al comienzo de su cadena entre comillas triples hace que su código funcione, ya que trata todo como cadenas sin procesar. Consulte esta referencia . Su código debe ser:
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')Prueba: