Regex_replace en Snowflake utilizando patrón.
Estoy buscando un patrón de expresiones regulares que elimine los artículos (a, an, the), caracteres especiales (;,:,% etc) y que expanda las abreviaturas (inc.-> ‘incorporation’, & -> ‘and’, etc) en Snowflake. Puedo hacer esto en Snowflake, pero no es completamente correcto. A continuación se muestra mi código. El problema es que quiero dar un patrón (por ejemplo, la salida de ‘a good book’ debería ser ‘good book’, pero la cadena ‘give a book’ debería permanecer como
'''
select REGEXP_REPLACE((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE ((
select REGEXP_REPLACE (
(select REGEXP_REPLACE(concat (' ', lower('a book of the great man'), ' '), '(^an )|(^the )|
(^a )'))
, '\.|\\,|\\(|\\)|\\!|\\\\|/|£|\$|%|\^|\*|-|\+|=|_|{|}|\[|\]|#|~|;|:|\'|`|@|<|>|\?|
¦|\|\')
), ' & ', ' and ')
), ' ltd ', ' limited ')
), '''', '')
'''')
davy.ai
Para eliminar artículos, caracteres especiales y expandir abreviaturas en una consulta de SQL de Snowflake mediante expresiones regulares, se puede utilizar el siguiente código:
El patrón de expresión regular utilizado en el código elimina los artículos (a, an, the) de la cadena de entrada utilizando
(^an )|(^the )|(^a )
. El carácter|
representa OR.A continuación, el patrón elimina los caracteres especiales utilizando
\\.|\\,|\\(|\\)|\\!|\\\\|/|£|\\$|%|\\^|\\*|-|\\+|=|_|{|}|\\[|\\]|#|~|;|:|''|
|@|<|>|\?|¬|\|’. La doble barra invertida
\` se utiliza para escapar los caracteres especiales en la consulta de SQL.A continuación, el patrón expande abreviaturas como ‘inc’ a ‘incorporation’, ‘tel’ a ‘telephone’, ‘ltd’ a ‘limited’, ‘co’ a ‘company’ y ‘llc’ a ‘limited liability company’.
Finalmente, el patrón elimina espacios en blanco adicionales utilizando
' ',' '
.Este código debería dar como resultado la salida deseada de ‘good book’ para la cadena de entrada ‘a good book’, mientras deja ‘give a book’ sin modificar.