regexp file path directory help
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Sasquatch
el 16 de Dic. de 2014
Comentada: Guillaume
el 16 de Dic. de 2014
I’m having issues with a regular expression. I have a file that looked in the same directory for a xml file and would see if it had a .xml extension and if it didn’t it would append it. So I had a regexp like:
XML_FileName = 'RandomFile.xml';
stringPresent = strfind(XML_FileName, '.');
if ~isempty(stringPresent)
stringParts = regexp(XML_FileName, '.', 'split');
if ~isequal(stringParts{end}, 'xml')
error('Not and XML file');
end
end
But I had someone try this:
XML_FileName = '..\NewFolder\RandomFile.xml';
And this didn’t work. I can’t figure out the regular expression to get this working. I tried:
stringParts = regexp(idfFileName, '[*\.*\\\w+\d+]\.[*\w]', 'split')
which I thought was, look for zero or more . and \ with one or more characters and number with a . and a few characters at the end. This didn’t work and variations of this didn’t work. I would like this to work if someone enters just the file name or a path location. Thanks!
1 comentario
Guillaume
el 16 de Dic. de 2014
For the record, your expression does not make much sense. In particular the square brackets are used to define character classes and everything inside is interpreted as literal character.
What your expression would match I think (it looks very weird) is a '*' or a '.' or a '\' or a 'w' or a '+' or a 'd' followed by a '.' followed by '*' or 'w'.
Even if you'd used the round brackets, your expression still wouldn't work. For a start, the 0 or more operator '*' needs to be after the expression you want to repeat.
Using fileparts as Adam answered is the best solution. However, for reference, a simple regex to extract the extension would be:
ext = regexp(filename, '(?<=\.)[^.]*$', 'match')
which means: look before for a '.' and match everything but a '.' up to the end of the string.
Respuesta aceptada
Adam
el 16 de Dic. de 2014
Editada: Adam
el 16 de Dic. de 2014
Couldn't you just use the fileparts function for this?
[pathstr,name,ext] = fileparts(filename);
if ~strcmpi( ext, 'xml' )
error( 'Not an XML file' )
end
type of thing. I can't remember off hand whether the '.' comes with the 'xml' in the ext output or off the top of my head whether strcmpi gives a sensible answer when compared against [] but those things can be checked easily.
Más respuestas (0)
Ver también
Categorías
Más información sobre Characters and Strings en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!