Adjunte la expresión regular que desea repetir entre paréntesis. Por ejemplo, si desea 5 repeticiones de ABC
:
(ABC){5}
O si desea cualquier número de repeticiones (0 o más):
(ABC)*
o una o más repeticiones:
(ABC)+
editar para responder a la actualización
Los paréntesis en expresiones regulares hacen dos cosas; agrupan una secuencia de elementos en una expresión regular, de modo que puede aplicar un operador a una secuencia completa en lugar de solo el último elemento, y capturan el contenido de ese grupo para que pueda extraer la subcadena que coincidió con esa subexpresión en la expresión regular
Puede anidar paréntesis; se cuentan desde la primera apertura paren. Por ejemplo:
>>> re.search('[0-9]* (ABC(...))', '123 ABCDEF 456').group(0)
'123 ABCDEF'
>>> re.search('[0-9]* (ABC(...))', '123 ABCDEF 456').group(1)
'ABCDEF'
>>> re.search('[0-9]* (ABC(...))', '123 ABCDEF 456').group(2)
'DEF'
Si desea evitar la captura cuando se está agrupando, puede utilizar (?:
. Esto puede ser útil si no desea paréntesis que esté utilizando para agrupar una secuencia con el fin de aplicar un operador para cambiar la numeración de sus coincidencias. También es más rápido.
>>> re.search('[0-9]* (?:ABC(...))', '123 ABCDEF 456').group(1)
'DEF'
Así que para responder a su actualización, sí, se puede utilizar grupos de captura anidados, o incluso evitar la captura con el grupo interno en absoluto:
>>> re.search('((?:ABC){5})(DEF)', 'ABCABCABCABCABCDEF').group(1)
'ABCABCABCABCABC'
>>> re.search('((?:ABC){5})(DEF)', 'ABCABCABCABCABCDEF').group(2)
'DEF'
Usaría + aquí en lugar de *, porque * coincidirá con 0 apariciones de (ABC). – Robusto
(ABC) {3,5} también para una gama de repeticiones –
Oh duh. Pensaba que() solo se usa para esa captura por alguna razón. Pero eso tiene sentido. Elegido por ser el primero – Falmarri