|
Post
|
Re RegexLos caracteres especiales son:
. |
(Punto). En el modo predeterminado, coincide con cualquier carácter excepto con una nueva línea. Si se ha especificado el indicador DOTALL, este coincide con cualquier carácter, incluido un salto de línea. |
^ |
(Caret.) Coincide con el inicio de la cadena, y en el modo MULTILINE también coincide inmediatamente después de cada nueva línea. |
$ |
Coincide con el final de la cadena o justo antes de la nueva línea al final de la cadena, y en el modo MULTILINE también coincide antes de una nueva línea. foo coincide con "foo" y "foobar", mientras que la expresión regular foo$ solo coincide con "foo". Más interesante aún, la búsqueda de foo. $ en 'foo1 foo2 ' coincide con 'foo2' normalmente, pero 'foo1' en el modo MULTILINE; la búsqueda de un solo $ en 'foo' encontrará dos coincidencias (vacías): una justo antes de la nueva línea y otra al final de la cadena. |
* |
Hace que el resultante coincida con 0 o más repeticiones de la busqueda anterior como sea posible. ab* coincidirá con 'a', 'ab' o 'a' seguido de cualquier cantidad de 'b'. |
+ |
Hace que el resultante coincida con 1 o más repeticiones de la busqueda anterior. ab+ coincidirá con 'a' seguido de cualquier número de veces de "b" distinto de cero; no coincidirá solo hay 'a'. |
? |
Hace que el resultante coincida con 0 o 1 repeticiones de la busqueda anterior. ab? coincidirá con 'a' o 'ab'. |
*? , +? , ?? |
El '*', '+' y '?' son los calificadores codiciosos; coinciden con la mayor cantidad de texto posible. A veces no se desea este comportamiento; si la busqueda <.*> coincide con ' b ', coincidirá con toda la cadena, y no solo con ''. Agregando ? después el calificador hara que la buesqueda sea no codiciosa o mínima; coincidirán el menor número posible de caracteres. El uso de RE <.*?> coincidirá solo con ''. |
{m} |
Especifica que deben coincidir exactamente m copias de la busqueda anterior; menos coincidencias hacen que todo la busqueda no coincida. Por ejemplo, a{6} coincidirá exactamente con seis caracteres 'a', pero no con cinco. |
{m,n} |
Hace que el resultante coincida desde m hasta n repeticiones de la busqueda anterior, intentando hacer coincidir tantas repeticiones como sea posible. Por ejemplo, a{3,5} coincidirá de 3 a 5 caracteres 'a'. Omitir m especifica un límite inferior de cero, y omitir n especifica un límite superior infinito. Por ejemplo, a{4,}b coincidirá con 'aaaab' o mil caracteres 'a' seguidos de una 'b', pero no 'aaab'. La coma no se puede omitir o el modificador se confundiría con la forma descrita anteriormente. |
{m,n}? |
Hace que el resultante coincida desde m hasta n repeticiones de la busqueda anterior, intentando coincidir con la menor cantidad posible de repeticiones. Esta es la versión no codiciosa del calificador anterior. Por ejemplo, en la cadena de 6 caracteres 'aaaaaa', a{3,5} coincidirá con 5 caracteres 'a', mientras que a{3,5}? solo coincidirá con 3 caracteres. |
{m,n}+ |
Hace que la RE resultante coincida de m a n repeticiones de la RE precedente, intentando coincidir tantas repeticiones como sea posible sin establecer ningún punto de retroceso. Es la versión posesiva del cuantificador anterior. Por ejemplo, en la cadena de 6 caracteres 'aaaaaa', a{3,5}+aa intenta coincidir con 5 caracteres 'a', luego, al requerir 2 'a' más, necesitará más caracteres de los disponibles y por lo tanto fallará, mientras que a{3,5}aa coincidirá con a{3,5} capturando 5, luego 4 'a' por retroceso y luego las 2 'a' finales son coincididas por la aa final en el patrón. x{m,n}+ es equivalente a (?>x{m,n}). |
|
Puede escapar de los caracteres especiales (permitiéndole hacer coincidir caracteres como '*', '?', etc.) o señalar una secuencia especial; las secuencias especiales se discuten a continuación.
Si no está utilizando una cadena sin procesar para expresar el patrón, recuerde que Python también usa la barra invertida como secuencia de escape en los literales de cadena; si el analizador de Python no reconoce la secuencia de escape, la barra invertida y el carácter subsiguiente se incluyen en la cadena resultante. Sin embargo, si Python reconociera la secuencia resultante, la barra invertida debería repetirse dos veces. Esto es complicado y difícil de entender, por lo que se recomienda enfáticamente que use cadenas sin formato para todas las expresiones, excepto las más simples.
|
[] |
Se utiliza para indicar un conjunto de caracteres. En un conjunto:
- Los caracteres se pueden enumerar individualmente, ejemplo [amk] coincidirá con 'a', 'm' o 'k'.
- Los rangos de caracteres se pueden indicar dando dos caracteres y separándolos con '-', por ejemplo [a-z] coincidirá con cualquier letra ASCII minúscula, [0-5][0-9] coincidirá con todos los números de dos dígitos de 00 a 59, y [0-9A-Fa-f] coincidirá con cualquier dígito hexadecimal. Si se escapa - (por ejemplo, [a-z]) o si se coloca como el primer o último carácter (por ejemplo, [-a] o [a-]), coincidirá con un literal '-'.
- Los caracteres especiales pierden su significado especial dentro de los conjuntos. Por ejemplo, [(+*)] coincidirá con cualquiera de los caracteres literales '(', '+', '*' o ')'.
- Las clases de caracteres como w o S (definidas a continuación) también se aceptan dentro de un conjunto, aunque los caracteres con los que coinciden dependen de si está vigente el modo ASCII o LOCALE.
- Los caracteres que no están dentro de un rango pueden coincidir complementando el conjunto. Si el primer carácter del conjunto es '^', todos los caracteres que no están en el conjunto coincidirán. Por ejemplo, [^5] coincidirá con cualquier carácter excepto '5', y [^^] coincidirá con cualquier carácter excepto '^'. ^ no tiene un significado especial si no es el primer carácter del conjunto.
- Para hacer coincidir un literal ']' dentro de un conjunto, prepárelo con una barra invertida o colóquelo al principio del conjunto. Por ejemplo, tanto [()[]{}] como []()[{}] coincidirán con un paréntesis.
- Es posible que en el futuro se agregue la compatibilidad con conjuntos anidados y operaciones de conjuntos como en Unicode Technical Standard #18 . Esto cambiaría la sintaxis, por lo que, para facilitar este cambio, se generará un FutureWarning en casos ambiguos por el momento. Eso incluye conjuntos que comienzan con un literal '[' o que contienen secuencias de caracteres literales '--', '&&', '~~' y '||'. Para evitar una advertencia, escápelos con una barra invertida.
|
| |
A|B, donde A y B pueden ser arbitrarios, crea una expresión regular que coincidirá con A o B. Un número arbitrario de la busqueda puede estar separado por '|' De este modo. Esto también se puede usar dentro de grupos (ver más abajo). A medida que se escanea la cadena de destino, las busquedas separados por '|' se prueban de izquierda a derecha. Cuando un patrón coincide completamente, se acepta esa rama. Esto significa que una vez que A coincide, B no se evaluará más, incluso si se produjera una coincidencia general más prolongada. En otras palabras, el '|' El operador nunca es codicioso. Para hacer coincidir un literal '|', use |, o enciérrelo dentro de una clase de caracteres, como en [|].
|
(...) |
Coincide con cualquier expresión regular que esté dentro de los paréntesis e indica el inicio y el final de un grupo; el contenido de un grupo se puede recuperar después de que se haya realizado una coincidencia, y se puede hacer coincidir más adelante en la cadena con la secuencia especial de umber, que se describe a continuación. Para hacer coincidir los literales '(' o ')', use ( o ), o enciérrelos dentro de una clase de caracteres: [(], [)]. |
(?...) |
Esta es una notación de extensión (un '?' después de un '(' no tiene sentido de lo contrario). El primer carácter después de '?' determina cuál es el significado y la sintaxis adicional de la construcción. Las extensiones generalmente no crean un nuevo grupo; (?P...) es la única excepción a esta regla. Las siguientes son las extensiones admitidas actualmente. |
(?aiLmsux) |
(Una o más letras del conjunto 'a', 'i', 'L', 'm', 's', 'u', 'x'). El grupo coincide con la cadena vacía; las letras establecen los indicadores correspondientes: re.A (coincidencia solo con ASCII), re.I (ignorar mayúsculas y minúsculas), re.L (depende de la configuración regional), re.M (multilínea), re.S (el punto coincide con todo) , re.U (coincidencia Unicode) y re.X (detallado), para toda la expresión regular. (Las banderas se describen en Contenido del módulo). Esto es útil si desea incluir las banderas como parte de la expresión regular, en lugar de pasar un argumento de bandera a la función re.compile() . Las banderas deben usarse primero en la cadena de expresión. |
(?:...) |
Una versión sin captura de paréntesis regulares. Coincide con cualquier expresión regular que esté dentro de los paréntesis, pero la subcadena que coincide con el grupo no se puede recuperar después de realizar una coincidencia ni se puede hacer referencia a ella más adelante en el patrón. |
(?aiLmsux-imsx:...) |
(Cero o más letras del conjunto 'a', 'i', 'L', 'm', 's', 'u', 'x', seguido opcionalmente de '-' seguido de una o más letras del 'i', 'm', 's', 'x'.) Las letras activan o eliminan los indicadores correspondientes: re.A (coincidencia solo ASCII), re.I (ignorar mayúsculas y minúsculas), re.L (depende de la configuración regional ), re.M (multilínea), re.S (el punto coincide con todo), re.U (coincidencia Unicode) y re.X (detallado), para la parte de la expresión. (Las banderas se describen en Contenidos del módulo).
Las letras 'a', 'L' y 'u' se excluyen mutuamente cuando se usan como banderas en línea, por lo que no se pueden combinar ni seguir a '-'. En cambio, cuando uno de ellos aparece en un grupo en línea, anula el modo de coincidencia en el grupo adjunto. En los patrones Unicode (?a:...) cambia a coincidencia solo ASCII y (?u:...) cambia a coincidencia Unicode (predeterminado). En el patrón de bytes (?L:...) cambia a la coincidencia según la configuración regional y (?a:...) cambia a la coincidencia solo ASCII (predeterminado). Esta anulación solo tiene efecto para el grupo en línea estrecho y el modo de coincidencia original se restaura fuera del grupo.
|
(?>...) |
Intenta coincidir con ... como si fuera una expresión regular independiente y, si tiene éxito, continúa coincidiendo con el resto del patrón que le sigue. Si el patrón siguiente no coincide, la pila sólo puede desenrollarse hasta un punto anterior a (?>...) porque una vez que sale, la expresión, conocida como grupo atómico, ha desechado todos los puntos de la pila dentro de sí misma. Por lo tanto, (?>.*). nunca coincidiría con nada porque primero el .* coincidiría con todos los caracteres posibles y luego, al no quedar nada con lo que coincidir, el . final no coincidiría. Como no hay puntos de pila guardados en el grupo atómico, y no hay ningún punto de pila antes de él, toda la expresión fallaría.
|
(?P<name>...) |
Similar a los paréntesis normales, pero se puede acceder a la subcadena que coincide con el grupo a través del nombre simbólico del grupo. Los nombres de grupo deben ser identificadores de Python válidos y cada nombre de grupo debe definirse solo una vez dentro de una expresión regular. Un grupo simbólico es también un grupo numerado, como si el grupo no tuviera nombre.
Se puede hacer referencia a grupos con nombre en tres contextos. Si el patrón es (?P['"]).*?(?P=quote) (es decir, hacer coincidir una cadena citada con comillas simples o dobles):
|
|
|
(?P=name) |
Una referencia inversa a un grupo con nombre; coincide con cualquier texto que coincida con el grupo anterior llamado name. |
(?#...) |
Un comentario; el contenido de los paréntesis simplemente se ignora. |
(?=...)
|
Coincide si ... coincide con el siguiente, pero no consume nada de la cadena. Esto se denomina aserción anticipada. Por ejemplo, Isaac (?=Asimov) coincidirá con 'Isaac ' solo si va seguido de 'Asimov'. |
(?!...) |
Coincide si ... no coincide con el siguiente. Esta es una afirmación anticipada negativa. Por ejemplo, Isaac (?!Asimov) coincidirá con 'Isaac ' solo si no es seguido de "Asimov". |
(?<=...) |
Coincide si la posición actual en la cadena está precedida por una coincidencia para ... que termina en la posición actual. Esto se llama una afirmación positiva de mirar atrás. (?<=abc)def encontrará una coincidencia en 'abcdef', ya que la búsqueda posterior hará una copia de seguridad de 3 caracteres y verificará si el patrón contenido coincide. El patrón contenido solo debe coincidir con cadenas de una longitud fija, lo que significa que abc o a|b están permitidos, pero a* y a{3,4} no. Tenga en cuenta que los patrones que comienzan con afirmaciones positivas de búsqueda posterior no coincidirán con el comienzo de la cadena que se busca; lo más probable es que desee utilizar la función de búsqueda() en lugar de la función de coincidencia(): |
(? |
Coincide si la posición actual en la cadena no está precedida por una coincidencia para .... Esto se denomina aserción de búsqueda negativa inversa. De forma similar a las afirmaciones de búsqueda positiva, el patrón contenido solo debe coincidir con cadenas de una longitud fija. Los patrones que comienzan con aserciones negativas de búsqueda posterior pueden coincidir al comienzo de la cadena que se busca. |
(?(id/name)yes-pattern|no-pattern) |
Intentará hacer coincidir con el patrón yes-pattern si existe el grupo con la id o name dado, y con el patrón no-pattern si no existe. no-pattern es opcional y se puede omitir. Por ejemplo, (<)?(w+@w+(?:.w+)+)(?(1)>|$) es un patrón de coincidencia de correo electrónico deficiente, que coincidirá con '' así como 'usuario@host.com', pero no con ''. |
|
Las secuencias especiales constan de '' y un carácter de la lista a continuación. Si el carácter ordinario no es un dígito ASCII o una letra ASCII, el resultante coincidirá con el segundo carácter. Por ejemplo, $ coincide con el carácter '$'. |
umber |
Coincide con el contenido del grupo del mismo número. Los grupos se numeran a partir del 1. Por ejemplo, (.+) 1 coincide con 'the the' o '55 55', pero no con 'thethe' (tenga en cuenta el espacio después del grupo). Esta secuencia especial solo se puede usar para hacer coincidir uno de los primeros 99 grupos. Si el primer dígito del número es 0, o si el número tiene 3 dígitos octales, no se interpretará como una coincidencia de grupo, sino como el carácter con número de valor octal. Dentro de '[' y ']' de una clase de caracteres, todos los escapes numéricos se tratan como caracteres. |
|
|
Context of reference to group “quote”
|
Ways to reference it
|
in the same pattern itself
|
|
when processing match object m
|
-
m.group('quote')
-
m.end('quote') (etc.)
|
in a string passed to the repl argument of re.sub()
|
|
A
Matches only at the start of the string.
Matches the empty string, but only at the beginning or end of a word. A word is defined as a sequence of word characters. Note that formally, is defined as the boundary between a w and a W character (or vice versa), or between w and the beginning/end of the string. This means that r'foo' matches 'foo' , 'foo.' , '(foo)' , 'bar foo baz' but not 'foobar' or 'foo3' .
By default Unicode alphanumerics are the ones used in Unicode patterns, but this can be changed by using the <a href="https://docs.python.org/3/library/re.html#re.ASCII" title="re.ASCII">ASCII</a> flag. Word boundaries are determined by the current locale if the LOCALE flag is used. Inside a character range, represents the backspace character, for compatibility with Python’s string literals.
B
Matches the empty string, but only when it is <em>not</em> at the beginning or end of a word. This means that r'pyB' matches 'python' , 'py3' , 'py2' , but not 'py' , 'py.' , or 'py!' . B is just the opposite of , so word characters in Unicode patterns are Unicode alphanumerics or the underscore, although this can be changed by using the ASCII flag. Word boundaries are determined by the current locale if the LOCALE flag is used.
d
For Unicode (str) patterns:
Matches any Unicode decimal digit (that is, any character in Unicode character category [Nd]). This includes [0-9] , and also many other digit characters. If the ASCII flag is used only [0-9] is matched.
For 8-bit (bytes) patterns:
Matches any decimal digit; this is equivalent to [0-9] .
D
Matches any character which is not a decimal digit. This is the opposite of d . If the ASCII flag is used this becomes the equivalent of [^0-9] .
s
For Unicode (str) patterns:
Matches Unicode whitespace characters (which includes [ fv] , and also many other characters, for example the non-breaking spaces mandated by typography rules in many languages). If the ASCII flag is used, only [ fv] is matched.
For 8-bit (bytes) patterns:
Matches characters considered whitespace in the ASCII character set; this is equivalent to [ fv] .
S
Matches any character which is not a whitespace character. This is the opposite of s . If the ASCII flag is used this becomes the equivalent of [^ fv] .
w
For Unicode (str) patterns:
Matches Unicode word characters; this includes most characters that can be part of a word in any language, as well as numbers and the underscore. If the <a href="https://docs.python.org/3/library/re.html#re.ASCII" title="re.ASCII">ASCII</a> flag is used, only [a-zA-Z0-9_] is matched.
For 8-bit (bytes) patterns:
Matches characters considered alphanumeric in the ASCII character set; this is equivalent to [a-zA-Z0-9_] . If the LOCALE flag is used, matches characters considered alphanumeric in the current locale and the underscore.
W
Matches any character which is not a word character. This is the opposite of w . If the ASCII flag is used this becomes the equivalent of [^a-zA-Z0-9_] . If the LOCALE flag is used, matches characters which are neither alphanumeric in the current locale nor the underscore.
Matches only at the end of the string.
INICIO ---------------------------------------------------------------------------------------------------------------------------
|