Skip to content

Instantly share code, notes, and snippets.

@rmorenobello
Last active September 7, 2026 14:17
Show Gist options
  • Select an option

  • Save rmorenobello/635e326e15e12bc01c1ab389f2e9064e to your computer and use it in GitHub Desktop.

Select an option

Save rmorenobello/635e326e15e12bc01c1ab389f2e9064e to your computer and use it in GitHub Desktop.
Regular Expressions
Convertir:
cei_nsre NUMBER(9, 0) NOT NULL,
oeit_div DATE NULL,
col_cpr VARCHAR2(2),
NOT NULL puede o no estar, lo ignoramos.
en:
cei_nsre NUMBER 9 0
oeit_div DATE null null
col_cpr VARCHAR2 2 null
Es decir, columnas Tipo, Tamaño, Decimales, separadas por saltos de tabulador (que he representado con \t)
---------------------------------------
Flavour = PCRE2 (Notepad++)
Regex:
^(\w+)\s+([A-Z0-9]+)(?:\((\d+)(?:\s+[A-Z]+)?(?:,\s?(\d+))?\))?\s*(?:(?:NOT )?NULL)?(?:,)?$
NOT NULL puede o no estar, lo ignoramos.
Substitution:
$1\t$2\t(?3$3:null)\t(?4$4:null)
con sustitucion condicional (?3$3:null)
Enunciado:
Regular expression en flavour PCRE2.
Tendría que coger este texto
NUMBER(9,0)
DATE
VARCHAR2(2 CHAR)
y devolver
NUMBER\t9\t0
DATE\tnull\tnull
VARCAHR2\t2\null
Es decir, columnas Tipo, Tamaño, Decimales, separadas por saltos de tabulador (que he representado con \t)
-------------------------------------------------------
Flavour = PCRE2 (Notepad++)
Regex:
^([A-Z0-9]+)(?:\((\d+)(?:\s+[A-Z]+)?(?:,(\d+))?\))?$
Substitution:
$1\t(?2$2:null)\t(?3$3:null)
con sustitucion condicional (?2$2:null)
Explicación del patrón:
^ y $ : Marcan el inicio y el fin de la línea.
([A-Z0-9]+) : Grupo 1. Captura el nombre del tipo de datos (ej. NUMBER, DATE, VARCHAR2).
(?:\( ... \))? : Grupo no capturador opcional para los paréntesis. Esto permite que tipos como DATE coincidan aunque no tengan paréntesis.
(\d+) : Grupo 2. Captura el primer número (el tamaño).
(?:\s+[A-Z]+)? : Grupo no capturador opcional para ignorar modificadores de texto dentro del paréntesis (como CHAR o BYTE).
(?:,(\d+))? : Grupo no capturador opcional que busca una coma seguida de dígitos.
(\d+) (dentro del grupo anterior): Grupo 3. Captura el segundo número (los decimales), si existe.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment