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.

Extraer de una cadena en BigQuery usando regexp_extract

Tengo una cadena larga en BigQuery de la cual necesito extraer algunos datos.

Parte de la cadena se ve así:

...  source: "agent"  resolved_query: "hi"  score: 0.61254  parameters ...

Quiero extraer datos como agent, hi y 0.61254.

Estoy intentando usar regexp_extract pero no puedo hacer que la expresión regular funcione correctamente:

select
regexp_extract([col],r'score: [0-9]*\.[0-9]+') as score,
regexp_extract([col],r'source: [^"]*') as source
from [table]

¿Cuál debería ser la expresión regular para obtener solo agent o 0.61254 sin el nombre del campo y sin comillas?

Gracias de antemano.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para extraer agent o 0.61254 sin los nombres de campo y las comillas, la expresión regular en regexp_extract deberá modificarse de la siguiente manera:

    • Para extraer agent:
    select regexp_extract([col], r'"source":\s*"([^"]+)"', 1) as agent from [table]
    

    Esta expresión regular buscará el patrón "source": "agent" en la cadena de entrada y devolverá el valor agent sin las comillas.

    • Para extraer 0.61254:
    select regexp_extract([col], r'"score":\s*([0-9]+\.[0-9]+)', 1) as score from [table]
    

    Esta expresión regular buscará el patrón "score": 0.61254 en la cadena de entrada y devolverá el valor 0.61254 sin el nombre de campo y las comillas.

Comments are closed.