Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

318
Vistas
Extraiga filas si hay / hay 'n' palabra / s antes o después de un patrón en postgres 11

Tengo la siguiente tabla en postgres.

 col1 col2 col3 NCT00000412 Drug Placebo Calcitriol NCT00000412 Drug Placebo Alendronate NCT00000774 Biological Placebo version of rgp120/HIV-1MN NCT00000774 Biological Placebo version of rgp120/HIV-1SF2 NCT00005648 Drug Gemcitabine with Placebo NCT00007631 Drug Tretinoin 0.1% cream or placebo NCT00007735 Drug Doxycycline (200mg/day) or Placebo NCT00032435 Drug PAL-40 Placebo NCT00032435 Drug abciximab placebo; reteplase placebo, abciximab NCT00032435 Drug Valsartan placebo + nateglinide placebo

Estoy tratando de extraer esas filas donde la palabra placebo tiene una sola palabra antes o después. La salida esperada es:

 col1 col2 col3 NCT00000412 Drug Placebo Calcitriol NCT00000412 Drug Placebo Alendronate NCT00032435 Drug PAL-40 Placebo

He intentado siguiendo expresiones regulares:

 select * from table where name ~* '\splacebo\w+' or name ~* '\w+placebo\s'
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puedes utilizar

 select * from table where name ~* '^(?:placebo\s+\S+|\S+\s+placebo)$'

Vea la demostración de expresiones regulares

Detalles

  • ^ - comienzo de la cadena
  • (?:placebo\s+\S+|\S+\s+placebo) - un grupo sin captura que coincide con
    • placebo\s+\S+ - placebo , luego 1+ espacios en blanco y luego 1+ espacios que no son en blanco
    • | - o
    • \S+\s+placebo - 1+ espacios sin espacios en blanco, luego 1+ espacios en blanco y luego placebo
  • $ - final de la cadena.
over 4 years ago · Santiago Trujillo Denunciar

0

Creo que quieres:

 where col3 ~* '(^\S+\s+placebo)|(placebo\s+\S+$)'

Desglose:

 ( ^ beginning of the string \S+ 1 to N characters other than a space \s+ 1 to N spaces placebo literal string "placebo" ) | OR ( placebo literal string "placebo" \s+ 1 to N spaces \S+ 1 to N characters other than a space $ end of the string )

Usé \S en lugar de \w porque quieres hacer coincidir los guiones (lo que \w no hace).

over 4 years ago · Santiago Trujillo Denunciar

0

Como nota, puedes hacer esto simplemente usando like :

 where (name like '% Placebo%' and name not like '% % Placebo%') or (name like '%Placebo %' and name not like '%Placebo % %')
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda