REGEX: Tengo texto en el archivo como se muestra a continuación y estoy tratando de obtener la parte entre comillas de la línea que comienza con user_id.

DECLARE
   user_id    VARCHAR(1)  := 'ITSME'; -- 
BEGIN
 SELECT * FROM XXX WHERE user_id='ITSME';

Puedo obtener la línea user_id completa desde abajo regex.

Código que intenté obtener la primera parte

(?i)user_id.*(?i)VARCHAR.*:=.*;

Estoy intentando la segunda parte donde puedo obtener la cadena entre comillas de la salida anterior.

Intenté la siguiente parte y puedo obtener el resultado que quiero.

(?:(?i)user_id\s*(?i)VARCHAR.*\s*:=\s*')(.*)(?:'.*;)

Pero, ¿hay alguna manera de reescribir lo anterior sin salir?: Como

Look for string  insides quotes IN ((?i)user_id.*(?i)VARCHAR.*:=.*;) -- this first part regex output

Python:

x = re.findall('''(?:(?i)user_id\s*(?i)VARCHAR.*\s*:=\s*')(.*)(?:'.*;)''', content)
print (x)

Así que intenté mostrar la salida en Python usando arriba y muestra el resultado que quiero.

¿Existe una forma sencilla de reescribir la expresión regular sin ?:

1
skv 25 ago. 2020 a las 16:50

1 respuesta

La mejor respuesta

Usted podría usar

^\s*user_id(?=.*VARCHAR).+?'([^']+)'

Consulte una demostración en regex101.com .

2
Jan 25 ago. 2020 a las 15:14