re — expresiones regulares simples¶
Este módulo implementa operaciones con expresiones regulares. La sintaxis de expresiones regulares admitida es un subconjunto del módulo re de CPython (y en realidad es un subconjunto de las expresiones regulares extendidas de POSIX).
Los operadores y secuencias especiales admitidos son:
.Coincide con cualquier carácter.
[...]Coincide con un conjunto de caracteres. Se admiten caracteres individuales y rangos, incluidos conjuntos negados (p. ej.
[^a-c]).^Coincide con el inicio de la cadena.
$Coincide con el final de la cadena.
?Coincide con cero o una repetición del subpatrón anterior.
*Coincide con cero o más repeticiones del subpatrón anterior.
+Coincide con una o más repeticiones del subpatrón anterior.
??Versión no codiciosa de
?, coincide con cero o uno, dando preferencia a cero.*?Versión no codiciosa de
*, coincide con cero o más, dando preferencia a la coincidencia más corta.+?Versión no codiciosa de
+, coincide con uno o más, dando preferencia a la coincidencia más corta.|Coincide con el subpatrón del lado izquierdo o con el del lado derecho de este operador.
(...)Agrupación. Cada grupo es de captura (la subcadena que captura se puede acceder con el método
match.group()).(?:...)Agrupación sin captura. Cada grupo se compara usando las mismas reglas que la agrupación normal, pero no formará parte del objeto de coincidencia.
\dCoincide con un dígito. Equivale a
[0-9].\DCoincide con un no dígito. Equivale a
[^0-9].\sCoincide con un espacio en blanco. Equivale a
[ \t-\r].\SCoincide con un carácter que no sea espacio en blanco. Equivale a
[^ \t-\r].\wCoincide con «caracteres de palabra» (solo ASCII). Equivale a
[A-Za-z0-9_].\WCoincide con caracteres que no sean «caracteres de palabra» (solo ASCII). Equivale a
[^A-Za-z0-9_].\Carácter de escape. Cualquier otro carácter que siga a la barra invertida, salvo los enumerados arriba, se toma literalmente. Por ejemplo,
\*equivale al*literal (no se trata como el operador*). Tenga en cuenta que\r,\n, etc. no se manejan de forma especial, y equivaldrán a las letras literalesr,n, etc. Por ello, no se recomienda usar cadenas de Python en bruto (r"") para expresiones regulares. Por ejemplo,r"\r\n"usada como expresión regular equivale a"rn". Para coincidir con un carácter CR seguido de LF, use"\r\n".
NO ADMITIDO:
repeticiones contadas (
{m,n})grupos con nombre (
(?P<name>...))aserciones más avanzadas (
\b,\B)escapes de caracteres especiales como
\r,\n- use en su lugar el escape propio de Pythonetc.
Ejemplo:
import re
# As re doesn't support escapes itself, use of r"" strings is not
# recommended.
regex = re.compile("[\r\n]")
regex.split("line1\rline2\nline3\r\n")
# Result:
# ['line1', 'line2', 'line3', '', '']
Funciones¶
- re.compile(regex_str: str, flags: int = 0) 'regex'¶
Compila la expresión regular y devuelve un objeto regex.
- re.search(regex_str: str, string: str) 'match | None'¶
Compila regex_str y lo busca en string. A diferencia de
match, esto busca en la cadena la primera posición que coincide con la expresión regular (que aún puede ser 0 si la expresión regular está anclada).
- re.sub(regex_str: str, replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str¶
Compila regex_str y lo busca en string, reemplazando todas las coincidencias con replace, y devolviendo la nueva cadena.
replace puede ser una cadena o una función. Si es una cadena, se pueden usar secuencias de escape de la forma
\<number>y\g<number>para expandirse al grupo correspondiente (o a una cadena vacía para grupos no coincidentes). Si replace es una función, debe tomar un único argumento (la coincidencia) y debe devolver una cadena de reemplazo.Si se especifica count y es distinto de cero, la sustitución se detendrá después de realizar esa cantidad de sustituciones. El argumento flags se ignora.
Objetos Regex¶
Expresión regular compilada. Las instancias de esta clase se crean usando re.compile().
- class re.regex
Objeto de expresión regular compilada devuelto por
re.compile().- match(string: str, pos: int = 0, endpos: int | None = None) 'match | None'¶
Aplica esta expresión regular compilada a string, anclada al inicio de la región de búsqueda, y devuelve un objeto
match, oNonesi la expresión regular no coincide. Este es el equivalente con patrón compilado dematcha nivel de módulo, y es mucho más eficiente cuando el mismo patrón se aplica a varias cadenas.El parámetro opcional pos indica un índice en string donde debe comenzar la búsqueda; su valor predeterminado es
0. Esto no equivale completamente a hacer un corte de la cadena; el carácter de patrón'^'coincide en el verdadero inicio de la cadena y en las posiciones justo después de un salto de línea, pero no necesariamente en el índice donde debe comenzar la búsqueda.El parámetro opcional endpos limita hasta dónde se busca en string; será como si la cadena tuviera endpos caracteres de longitud, de modo que solo se buscan los caracteres desde pos hasta
endpos - 1. Si endpos esNone(el valor predeterminado) se busca en toda la cadena.
- search(string: str, pos: int = 0, endpos: int | None = None) 'match | None'¶
Recorre string buscando la primera ubicación donde esta expresión regular compilada produce una coincidencia, y devuelve un objeto
match, oNonesi ninguna posición coincide. Este es el equivalente con patrón compilado de la funciónsearch()a nivel de módulo, y es mucho más eficiente cuando el mismo patrón se aplica a varias cadenas.El parámetro opcional pos indica un índice en string donde debe comenzar la búsqueda; su valor predeterminado es
0. Esto no equivale completamente a hacer un corte de la cadena; el carácter de patrón'^'coincide en el verdadero inicio de la cadena y en las posiciones justo después de un salto de línea, pero no necesariamente en el índice donde debe comenzar la búsqueda.El parámetro opcional endpos limita hasta dónde se busca en string; será como si la cadena tuviera endpos caracteres de longitud, de modo que solo se buscan los caracteres desde pos hasta
endpos - 1. Si endpos esNone(el valor predeterminado) se busca en toda la cadena.
- sub(replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str¶
Busca esta expresión regular compilada en string, reemplazando todas las coincidencias con replace, y devuelve la nueva cadena. Este es el equivalente con patrón compilado de la función
sub()a nivel de módulo, y es mucho más eficiente cuando el mismo patrón se aplica a varias cadenas.replace puede ser una cadena o una función. Si es una cadena, se pueden usar secuencias de escape de la forma
\<number>y\g<number>para expandirse al grupo correspondiente (o a una cadena vacía para grupos no coincidentes). Si replace es una función, debe tomar un único argumento (la coincidencia) y debe devolver una cadena de reemplazo.Si se especifica count y es distinto de cero, la sustitución se detendrá después de realizar esa cantidad de sustituciones. El argumento flags se ignora.
Objetos Match¶
Un objeto de coincidencia contiene el resultado de una coincidencia exitosa.
- class re.match(regex_str: str, string: str)¶
Compara regex_str con string, anclado al inicio de la cadena, y devuelve un objeto de coincidencia, o
Nonesi no coincide. Este es el atajo a nivel de módulo:re.match(regex_str, string)equivale are.compile(regex_str).match(string).El mismo objeto de coincidencia también es devuelto por
search(), por los métodos con patrón compiladoregex.match()/regex.search(), y se pasa a la función de reemplazo usada porsub().