У меня есть data.frame, который содержит текстовый столбец имен файлов. Я хотел бы вернуть имя файла без пути или расширения файла. Как правило, имена моих файлов нумеруются, но они не обязательно должны быть. Например:Regex возвращает имя файла, удаляет путь и расширение файла
df<-data.frame(data=c("a","b"),fileNames=c("C:/a/bb/ccc/NAME1.ext","C:/a/bb/ccc/d D2/name2.ext"))
Я хотел бы вернуть эквивалент
df<-data.frame(data=c("a","b"),fileNames=c("NAME","name"))
, но я не могу понять, пятно регулярного выражения, чтобы сделать это с GSUB. Например, я могу избавиться от расширения с (при условии, имя файла заканчивается числом):
gsub('([0-9]).ext','',df[,"fileNames"])
Хотя я пытался различные узоры (читая регулярное выражение файлов справка и аналогичные решения на этом сайте), Я не могу получить регулярное выражение, чтобы вернуть текст между последним «/» и первым «.». Любые мысли или переходы к подобным вопросам очень ценятся!
Лучшее, что я получил это:
gsub('*[[:graph:]_]/|*[[:graph:]_].ext','',df[,"fileNames"])
Но это 1) не избавляется от всех ведущих символов пути и 2) зависит от конкретного расширения файла.
Интересный подход. Для меня этот подход более ясен, чем регулярное выражение, которое в настоящее время немного запутывает для меня. Я попробую. – Docuemada
Это сработало хорошо, спасибо. Это имеет больше смысла для меня, но это, вероятно, потому, что мне нужно больше практики с регулярным выражением! – Docuemada
@Docuemada, без проблем. Как показано, 'file_path_sans_ext' является основным регулярным выражением, поскольку я подозреваю, что' basename' (но не проверен для проверки). – A5C1D2H2I1M1N2O1R2T1