/ / Perl espressione regolare per rimuovere tutto tranne l'ultima occorrenza - regex, perl

Perl regolare espressione per rimuovere tutto tranne l'ultima occorrenza - regex, perl

Sto cercando di utilizzare la riga di comando "rinomina" per modificare alcuni nomi di file che contengono diversi periodi. Ad esempio: this.is.a.file.name.txt

Dopo aver guardato un po 'ho trovato alcuni esempi che mi hanno quasi portato lì, ma non riesco a farlo funzionare come richiesto. Inutile dire che sono un principiante molto verde con regex "s.

Ho provato questo:

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

Il che risulta in questo:

this.a.file.name.txt

Ho provato a modificare gli esempi trovati nelle seguenti risorse, ma sono bloccato. PHP Regex: seleziona tutto tranne l'ultima occorrenza Regex che non sostituisce l'ultima occorrenza di una partita

risposte:

5 per risposta № 1

La tua espressione regolare non è del tutto giusta per aun paio di motivi. In primo luogo, la cosa per cui stai sostituendo la stringa vuota dovrebbe essere solo il periodo, mentre stai corrispondendo da un punto a tutto ciò che è il periodo successivo e rimuovilo. Inoltre, lo farai solo una volta.

L'espressione regolare che vuoi è /.(?=.*.)//g, che dice abbinare un periodo che è seguito da un'asserzione di larghezza zero di un numero qualsiasi di caratteri e un altro periodo, e farlo tutte le volte che può.