/ / Expresión regular de Perl para eliminar todo excepto la última aparición - expresiones regulares, perl

Expresión regular de Perl para eliminar todo excepto la última ocurrencia - regex, perl

Estoy tratando de usar la línea de comando "renombrar" para cambiar algunos nombres de archivos que contienen varios puntos. Por ejemplo: this.is.a.file.name.txt

Después de mirar un poco alrededor, he encontrado algunos ejemplos que casi me llevan allí, pero parece que no puedo hacerlo funcionar como es necesario. No hace falta decir que soy un principiante muy verde con expresiones regulares.

He intentado esto:

rename -v -n "s/.(.+?)(?=.)//" this.is.a.file.name.txt

Lo que resulta en esto:

this.a.file.name.txt

He intentado modificar los ejemplos que se encuentran en los siguientes recursos, pero estoy atascado. PHP Regex: Seleccionar todo excepto la última ocurrencia Regex no reemplaza la última aparición de un partido

Respuestas

5 para la respuesta № 1

Tu expresión regular no es del todo adecuada para unapar de razones Primero, lo que está sustituyendo por la cadena vacía debe ser solo el período, mientras que usted está haciendo coincidir de un período a todo lo que es el período siguiente y eliminarlo. Además, solo lo haces una vez.

La expresión regular que quieres es /.(?=.*.)//g, que dice coincidir con un período seguido de una aserción de ancho cero de cualquier número de caracteres y otro período, y hacerlo tantas veces como sea posible.