regexp file path directory help
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Sasquatch
am 16 Dez. 2014
Kommentiert: Guillaume
am 16 Dez. 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 Kommentar
Guillaume
am 16 Dez. 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.
Akzeptierte Antwort
Adam
am 16 Dez. 2014
Bearbeitet: Adam
am 16 Dez. 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!