es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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 ')

  ), '''', '')
  '''')
Tags:  ,

Answer

  1. Avatar for 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:

    SELECT REGEXP_REPLACE(
     REGEXP_REPLACE(
      REGEXP_REPLACE(
       REGEXP_REPLACE(
        REGEXP_REPLACE(
         REGEXP_REPLACE(
          REGEXP_REPLACE(
           REGEXP_REPLACE(
            REGEXP_REPLACE(
             lower('a book of the great man'), -- Cadena de entrada
             '(^an )|(^the )|(^a )', ''), -- Eliminar artículos
            '\\.|\\,|\\(|\\)|\\!|\\\\|/|£|\\$|%|\\^|\\*|-|\\+|=|_|{|}|\\[|\\]|#|~|;|:|''|`|@|<|>|\\?|¬|\\|'', ''), -- Eliminar caracteres especiales
           '&',' and '), -- Expandir ampersand
          '\\binc\\b', 'incorporation'), -- Expandir abreviatura 'inc'
         '\\btel\\b', 'telephone'), -- Expandir abreviatura 'tel'
        '\\bltd\\b', 'limited'), -- Expandir abreviatura 'ltd'
       '\\bco\\b', 'company'), -- Expandir abreviatura 'co'
      '\\bllc\\b', 'limited liability company'), -- Expandir abreviatura 'llc'
     '  ',' ') as output; -- Eliminar espacios en blanco adicionales
    

    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.

Comments are closed.