Parece que no puedo encontrar una manera de extraer todos los comentarios como en el siguiente ejemplo.¿Correspondencia de expresiones regulares entre dos cadenas?
bloque>>> import re
>>> string = '''
... <!-- one
... -->
... <!-- two -- -- -->
... <!-- three -->
... '''
>>> m = re.findall ('<!--([^\(-->)]+)-->', string, re.MULTILINE)
>>> m
[' one \n', ' three ']
con two -- --
no se corresponde muy probablemente a causa del mal de expresiones regulares. ¿Puede alguien señalarme en la dirección correcta cómo extraer coincidencias entre dos cadenas?
Hola He probado lo que ustedes sugirieron en los comentarios .... aquí está la solución de trabajo con poca actualización.
>>> m = re.findall ('<!--(.*?)-->', string, re.MULTILINE)
>>> m
[' two -- -- ', ' three ']
>>> m = re.findall ('<!--(.*\n?)-->', string, re.MULTILINE)
>>> m
[' one \n', ' two -- -- ', ' three ']
gracias!
cualquier cosa entre [] es un carácter único, por lo que (->) no buscará esa agrupación como parte del problema ... –
're.findall ('', cadena, re.DOTALL)' debería hacer. No necesita '^ \ (->)' aquí, porque el signo de interrogación lo hace no codicioso. – BrtH
¿Parece que está buscando solo las palabras? Si es así, ¿qué pasa con 'm = re.findall ('[\ w] +', cadena, re.MULTILINE)'? Además, la cadena es un nombre realmente malo para una, um, cadena. – Ben