Ho un data.frame che contiene una colonna di testo di nomi di file. Vorrei restituire il nome del file senza il percorso o l'estensione del file. In genere, i miei nomi di file sono stati numerati, ma non devono esserlo. Per esempio:Regex restituisce il nome del file, rimuove il percorso e l'estensione del file
df<-data.frame(data=c("a","b"),fileNames=c("C:/a/bb/ccc/NAME1.ext","C:/a/bb/ccc/d D2/name2.ext"))
Vorrei tornare l'equivalente di
df<-data.frame(data=c("a","b"),fileNames=c("NAME","name"))
ma io non riesco a capire l'espressione regolare chiazza di petrolio per fare questo con gsub. Ad esempio, posso eliminare l'estensione con (a condizione che il nome del file termina con un numero):
gsub('([0-9]).ext','',df[,"fileNames"])
Anche se ho cercato vari modelli (con la lettura dei file di espressione regolare di aiuto e le soluzioni simili su questo sito), Non riesco a ottenere un'espressione regolare per restituire il testo tra l'ultimo "/" e il primo ".". I pensieri o gli inviti a domande simili sono molto apprezzati!
Il migliore che ho ottenuto è:
gsub('*[[:graph:]_]/|*[[:graph:]_].ext','',df[,"fileNames"])
Ma 1) non si libera di tutti i personaggi principali del percorso e 2) è dipendente da un formato specifico.
Approccio interessante. Per me, questo approccio è più chiaro rispetto alla regex, che al momento è un po 'confusa per me. Lo proverò. – Docuemada
Questo ha funzionato bene, grazie. Ha più senso per me, ma probabilmente è perché ho bisogno di più pratica con regex! – Docuemada
@Docuemada, nessun problema. Come mostrato, 'file_path_sans_ext' è un'espressione regolare di base, poiché sospetto che' basename' sia (ma non controllato per verificare). – A5C1D2H2I1M1N2O1R2T1