¿Cómo puedo acceder a los grupos capturados si hago findall(r'regex(with)capturing.goes.here')
? Sé que puedo hacerlo a través de finditer
, pero no quiero repetir.¿Grupo de captura con Findall?
Respuesta
findall
simplemente devuelve el grupos capturados:
>>> re.findall('abc(de)fg(123)', 'abcdefg123 and again abcdefg123')
[('de', '123'), ('de', '123')]
Relevant extracto doc:
Devuelve todas las coincidencias no superpuestas del patrón en cadena, como una lista de cadenas . La cadena se escanea de izquierda a derecha, y las coincidencias son devueltas en el orden encontrado. Si hay uno o más grupos en el patrón , devuelva una lista de grupos; este será una lista de tuplas si el patrón tiene más de un grupo. Las coincidencias vacías se incluyen en el resultado a menos que toquen el comienzo de otra coincidencia.
Use grupos libremente. Los partidos se devuelven como una lista de grupos de pares ordenados:
>>> re.findall('(1(23))45', '12345')
[('123', '23')]
Si desea que el partido completo que se incluirán, simplemente encierre toda la expresión regular en un grupo:
>>> re.findall('(1(23)45)', '12345')
[('12345', '23')]
Varias maneras posibles:
>>> import re
>>> r = re.compile(r"'(\d+)'")
>>> result = r.findall("'1', '2', '345'")
>>> result
['1', '2', '345']
>>> result[0]
'1'
>>> for item in result:
... print(item)
...
1
2
345
>>>
import re
string = 'Perotto, Pier Giorgio'
names = re.findall(r'''
(?P<first>[-\w ]+),\s #first name
(?P<last> [-\w ]+) #last name
''',string, re.X|re.M)
print(names)
vuelve
[('Perotto', 'Pier Giorgio')]
re.M
tendría sentido si su cadena consta de varias líneas. También es necesario VERBOSE
modo (igual a re.X
) en la expresión regular que he escrito porque está utilizando '''
- 1. grupo de captura java regex
- 2. Reemplazo de Java Regex con el grupo de captura
- 3. Captura de grupo Regex en R con múltiples grupos de captura
- 4. ¿Cómo se captura un grupo con expresiones regulares?
- 5. Cómo usar 'IN (1,2,3)' con findAll?
- 6. Cómo usar ORDERBY con findAll() en Play
- 7. Regexes (dialecto .NET): comportamiento extraño de un grupo de captura
- 8. beautifulsoup findAll find_all
- 9. parámetros de cierre maravilloso findAll
- 10. ¿Qué es un "grupo de captura independiente" regex?
- 11. Python regex findall
- 12. Prolog Findall Implementación
- 13. PHP expresiones regulares grupo no captura no coincidencia
- 14. Perl, anexar un carácter a la i-ésima captura grupo
- 15. ¿Por qué el grupo que no captura (? :) parece no funcionar?
- 16. Lista genérica FindAll() vs. foreach
- 17. C# Array.FindAllIndexOf which FindAll IndexOf
- 18. Límite de filas para Doctrine FindAll Método
- 19. Captura de audio con HTML5
- 20. Python números findall expresiones regulares y puntos
- 21. Reemplazar el grupo de captura específico en lugar de la expresión regular completa en Perl
- 22. extbase repositorio findAll() devuelve resultado nulo
- 23. SQL buscar y reemplazar el límite de grupo de captura de expresiones regulares?
- 24. Política con std :: captura bad_alloc
- 25. Captura de grupos de expresiones regulares con múltiples coincidencias
- 26. Captura de sonido de Wine con TargetDataLine
- 27. Impedir la captura de pantalla con DirectX
- 28. ¿Errores de captura lanzados con `error`?
- 29. estado de captura 404 con jQuery AJAX
- 30. re.findall que devuelve un dict de grupos de captura nombrados?
Creo que está preguntando acerca de los grupos de expresiones regulares interior como en '(grupo 1) .. (Grupo 2)' – bluepnume
@bluepnume: Quizás, pero su pregunta no es tan clara. Su ejemplo solo tiene un grupo de captura. –