Tengo una carpeta con 100 carpetas, llamada así:

parent_folder/05/01/
parent_folder/05/02/
parent_folder/05/03/
parent_folder/05/04/
...
parent_folder/05/29/
parent_folder/05/30/

¿Cómo puedo especificar una ruta, con expresiones regulares, que seleccionaría solo el contenido de las carpetas 01 to 10, luego 11 to 20 y, finalmente, 21 to 30?

Estoy intentando

"parent_folder/05/[1-10]*/*"

Pero también selecciona 11, 12, ... hasta el 19.

EDITAR : quiero leer un conjunto de datos grande en pyspark en intervalos de 10 días, y todas las respuestas sugeridas, hasta ahora, parecen fallar.

0
Qubix 5 feb. 2019 a las 12:35

2 respuestas

La mejor respuesta

Si desea que el "10" se agrupe con su conjunto 01 ... 09, va a utilizar algo como esto:

parent_folder\/05\/(0[1-9]|10)\/

Luego, para su juego de 10 ... 20,

parent_folder\/05\/(1[1-9]|20)\/

Y así sucesivamente.

Puede probar estas expresiones regulares con el siguiente enlace: https://regex101.com/r/cXAYbS/2

En Python, necesitará:

regex = r"parent_folder\/05\/(1[1-9]|20)\/"

El enlace de arriba tiene un generador de "python", donde puede tomar prestado un código:

https://regex101.com/r/cXAYbS/2/codegen?language=python

2
vfalcao 5 feb. 2019 a las 10:12

¿Qué tal esto:

parent_folder/05/(?:0[1-9]|10)/

El '?:' Se utiliza para grupos que no capturan.

0
danielhc 5 feb. 2019 a las 09:52