Regexp for only numbers and "dots"
328 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Dale Black
el 11 de Mzo. de 2021
Comentada: Dale Black
el 13 de Mzo. de 2021
I have filenames like "999.999.1.20020318.133002.0" and I want to look through folders and move files with this naming scheme (only numbers and periods). Any idea how this could be done? I tried something like strcmp and contains but I cannot figure out how to get it to work.
Thanks in advance!
0 comentarios
Respuesta aceptada
Mohammad Sami
el 11 de Mzo. de 2021
You can use a regex like the following. this one will catch all digits and dots. The ^ in beginning and $ at the end ensure that it matches the entire name.
a = {'somname.txt' '999.999.1.20020318.133002.0'};
match = ~cellfun(@isempty,regexp(a,'^[\.0-9]*$'));
% you can use it with dir to list all files in the folder
b = dir();
match = ~cellfun(@isempty,regexp({b.name},'^[\.0-9]*$'));
4 comentarios
Mohammad Sami
el 11 de Mzo. de 2021
Editada: Mohammad Sami
el 11 de Mzo. de 2021
As noted in Walter's comment, dir will contain '.' and '..' as entries.
Assuming that first character must always be a digit, you can change the regex expression as follows.
b = dir();
match = ~cellfun(@isempty,regexp({b.name},'^\d[\.\d]*$'));
% substituted \d for 0-9
Also if you R2020b, you can use the new pattern functionality as follows.
b = dir();
match = matches({b.name},regexpPattern('^\d[\.\d]*$'));
Más respuestas (0)
Ver también
Categorías
Más información sobre File Operations 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!