Sintaxis de expresiones regulares

Información general

En el Sensitive Data Scanner, la regla de escaneo determina qué información confidencial se debe buscar en los datos. Puedes utilizar reglas de la Biblioteca de reglas de escaneo o puedes crear reglas de escaneo personalizadas utilizando patrones de expresiones regulares (regex) para buscar información confidencial. La sintaxis regex del Sensitive Data Scanner es un subconjunto de PCRE2.


Alternancia

Utiliza la alternancia para elegir la primera expresión que coincida. Una expresión en una alternancia puede dejarse vacía, lo que significa que coincide con cualquier cosa y hace que toda la expresión de la alternancia sea opcional.

Sintaxis regexDescripción
...|...|...Una alternancia.
...|...|Una alternancia con una expresión vacía.

Aserciones

AserciónDescripción
\bUn límite de palabra.
\BNo es un límite de palabra.
^Inicio de línea.
$Fin de una línea.
/AInicio del texto.
\zFin del texto.
\ZFin del texto (o antes de un \n que esté inmediatamente antes del final del texto).

Clases de ASCII

Nombra las clases que pueden utilizarse en clases de caracteres personalizados, por ejemplo [[:ascii:]]. Solo coinciden con caracteres ASCII.

Clase de nombresDescripción
alnumAlfanumérico.
alphaAlfabético.
asciiCualquier carácter ASCII.
blankUn espacio o pestaña.
cntrlUn carácter de control.
digitCualquier dígito.
graphCualquier carácter gráfico o de impresión (no un espacio).
lowerCualquier letra minúscula.
printCualquier carácter imprimible (incluidos los espacios).
punctCualquier carácter de puntuación.
spaceUn espacio en blanco.
upperCualquier letra mayúscula.
wordLo mismo que /w.
xdigitCualquier dígito hexadecimal.

Caracteres de escape

Sintaxis regexDescripción
\xhhEscapa caracteres con código hexadecimal hh (se permiten hasta 2 dígitos).
\x{hhhhhh}Escapa caracteres con código hexadecimal hhhhhh (entre 1 y 6 dígitos).
\aEscapa de una campana (\x{7}).
\bEscapa de un retroceso (\x{8}). Esto solo funciona en una clase de caracteres personalizados (por ejemplo, [\b]), de lo contrario se trata como un límite de palabra.
\cxEscapa a una secuencia de control, donde x es A-Z (en mayúsculas o minúsculas). Por ejemplo: \cA = \x{0}, \cB = \x{1},…\cZ = \x{19}.
\eEscapa el carácter de escape de ASCII (\x{1B}).
\fEscapa de un avance de página (\x{C}).
\nEscapa de una nueva línea (\x{A}).
\rEscapa de un retorno de carro (\x{D})
\tEscapa de un tabulador (\x{9}).
\vEscapa de un tabulador vertical (\x{B}).

Clases de caracteres

Sintaxis regexDescripción
.Coincide con cualquier carácter excepto \n. Activa el indicador s para que coincida con cualquier carácter, incluido \n.
\dCoincide con cualquier dígito ASCII ([0-9]).
\DCoincide con cualquier elemento que no coincida con \d.
\hCoincide con un espacio o tabulador ([\x{20}\t]).
\HCoincide con cualquier elemento que no coincida con \h.
\sCoincide con cualquier espacio en blanco ASCII ([\r\n\t\x{C}\x{B}\x{20}]).
\SCoincide con cualquier elemento que no coincida con \s.
\vCoincide con el espacio vertical ASCII ([\x{B}\x{A}\x{C}\x{D}]).
\VCoincide con cualquier elemento que no coincida con \v.
\wCoincide con cualquier carácter ASCII de palabra ([a-zA-Z0-9_]).
\WCoincide con cualquier elemento que no coincida con \w.
\p{x}Coincide con cualquier elemento que coincida con la propiedad unicode x. Consulta Propiedades Unicode para obtener una lista completa.

Clases de caracteres personalizados

Sintaxis regexDescripción
[...]Coincide con cualquier carácter que aparezca dentro de los paréntesis.
[^...]Coincide con todo lo que no aparece entre paréntesis.
[a-zA-Z]Coincide con cualquier elemento en el rango A - Z (mayúsculas o minúsculas).
[\s\w\d\S\W\D\v\V\h\H\p{x}...]Se permiten otras clases definidas anteriormente (excepto . que se trata como un literal).
[[:ascii_class:]]Coincide con clases de ASCII con denominación especial.
[[:^ascii_class:]]Coincide con clases de ASCII invertidas.

Groups (grupos)

Utiliza los grupos para cambiar la prioridad o establecer indicadores. Dado que las capturas no se utilizan en Sensitive Data Scanner, los grupos de captura se comportan como grupos de no captura. Del mismo modo, se ignoran los nombres de los grupos de captura.

Sintaxis regexDescripción
(...)Un grupo de captura.
(?<name>...)Un grupo de captura con nombre.
(?P<name>...)Un grupo de captura con nombre.
(?'name'...)Un grupo de captura con nombre.
(?:...)Un grupo de no captura.

Configuración de indicadores

Utiliza indicadores para modificar el comportamiento de regex. Hay dos formas de especificar indicadores:

  1. (?imsx:...): establece indicadores que solo se apliquen a la expresión dentro de un grupo de no captura.
  2. (?imsx)...: establece indicadores que se apliquen al resto del grupo actual.

Los indicadores que aparecen después de - se eliminan si ya estaban activados.

Utiliza (?-imsx) para desactivar los indicadores de imsx.

Indicadores disponibles

IndicadorNombreDescripción
iNo distingue mayúsculas de minúsculasLas letras coinciden tanto en mayúsculas como en minúsculas.
mModo multilínea^ y $ coinciden con el principio y el final de línea.
sLínea únicaPermite que . coincida con cualquier carácter, cuando normalmente coincide con cualquier elemento excepto \n).
xAmpliadoLos espacios en blanco se ignoran (excepto en una clase de caracteres personalizados).

Citado

Utiliza la sintaxis regex \Q...\E para tratar todo lo comprendido entre \Q y \E como un literal.

Cuantificadores

Los cuantificadores repiten la expresión anterior. Voraz (greedy) significa que se toma el mayor número de repeticiones y solo se devuelven cuando es necesario para encontrar una coincidencia. Diferido (Lazy) toma el mínimo número de repeticiones y añade más según sea necesario.

Sintaxis regexDescripción
?Repite 0 o 1 vez (voraz).
??Repite 0 o 1 vez (diferido).
+Repite 1 o más veces (voraz).
+?Repite 1 o más veces (diferido).
*Repite 0 o más veces (voraz).
*?Repite 0 o más veces (diferido).
{n}Repite exactamente n veces (el modificador diferido se acepta aquí, pero se ignora).
{n,m}Repite al menos n veces, pero no más de m veces (voraz).
{n,m}?Repite al menos n times, pero no más de m veces (diferido).
{n,}Repite al menos n veces (voraz).
{n,}?Repite al menos n veces (diferido).

Nota: {,m} no es válido y se trata como un literal. Del mismo modo, cualquier diferencia sintáctica, como añadir espacios dentro de las llaves, hace que el cuantificador se trate como un literal.

Propiedades Unicode

Propiedades Unicode para x en la clase de caracteres \p{x}.

Propiedades UnicodeDescripción
COtro
CcControl
CfFormato
CnSin asignar
CoUso privado
CsSustituto
LLetra
LlLetra minúscula
LmLetra modificadora
LoOtra letra
LtLetra en mayúscula de título
LuLetra mayúscula
MMarca
McMarca de separación
MeMarca de delimitación
MnMarca de no espaciado
NNúmero
NdNúmero decimal
NlNúmero de letra
NoOtro número
PPuntuación
PcPuntuación de conector
PdPuntuación de guion
PePuntuación de cierre
PfPuntuación final
PiPuntuación inicial
PoOtros signos de puntuación
PsPuntuación abierta
SSímbolo
ScSímbolo de moneda
SkSímbolo modificador
SmSímbolo matemático
SoOtro símbolo
ZSeparador
ZlSeparador de líneas
ZpSeparador de párrafo
ZsSeparador de espacios

Los nombres de script pueden utilizarse para coincidir con cualquier carácter del script. Se permiten los siguientes:

Adlam, Ahom, Anatolian_Hieroglyphs, Arabic, Armenian, Avestan, Balinese, Bamum, Bassa_Vah, Batak, Bengali, Bhaiksuki, Bopomofo, Brahmi, Braille, Buginese, Buhid, Canadian_Aboriginal, Carian, Caucasian_Albanian, Chakma, Cham, Cherokee, Chorasmian, Common, Coptic, Cuneiform, Cypriot, Cypro_Minoan, Cyrillic, Deseret, Devanagari, Dives_Akuru, Dogra, Duployan, Egyptian_Hieroglyphs, Elbasan, Elymaic, Ethiopic, Georgian, Glagolitic, Gothic, Grantha, Greek, Gujarati, Gunjala_Gondi, Gurmukhi, Han, Hangul, Hanifi_Rohingya, Hanunoo, Hatran, Hebrew, Hiragana, Imperial_Aramaic, Inherited, Inscriptional_Pahlavi, Inscriptional_Parthian, Javanese, Kaithi, Kannada, Katakana, Kayah_Li, Kharoshthi, Khitan_Small_Script, Khmer, Khojki, Khudawadi, Lao, Latin, Lepcha, Limbu, Linear_A, Linear_B, Lisu, Lycian, Lydian, Mahajani, Makasar, Malayalam, Mandaic, Manichaean, Marchen, Masaram_Gondi, Medefaidrin, Meetei_Mayek, Mende_Kikakui, Meroitic_Cursive, Meroitic_Hieroglyphs, Miao, Modi, Mongolian, Mro, Multani, Myanmar, Nabataean, Nandinagari, New_Tai_Lue, Newa, Nko, Nushu, Ogham, Ol_Chiki, Old_Hungarian, Old_Italic, Old_North_Arabian, Old_Permic, Old_Persian, Old_Sogdian, Old_South_Arabian, Old_Turkic, Old_Uyghur, Oriya, Osage, Osmanya, Pahawh_Hmong, Palmyrene, Pau_Cin_Hau, Phags_Pa, Phoenician, Psalter_Pahlavi, Rejang, Runic, Samaritan, Saurashtra, Sharada, Shavian, Siddham, SignWriting, Sinhala, Sogdian, Sora_Sompeng, Soyombo, Sundanese, Syloti_Nagri, Syriac, Tagalog, Tagbanwa, Tai_Le, Tai_Tham, Tai_Viet, Takri, Tamil, Tangsa, Tangut, Telugu, Thaana, Thai, Tibetan, Tifinagh, Tirhuta, Toto, Ugaritic, Vai, Vithkuqi, Wancho, Warang_Citi, Yezidi, Yi, Zanabazar_Square.

Leer más

Más enlaces, artículos y documentación útiles: