Regexp for only numbers and "dots"
323 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Dale Black
il 11 Mar 2021
Commentato: Dale Black
il 13 Mar 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 Commenti
Risposta accettata
Mohammad Sami
il 11 Mar 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 Commenti
Mohammad Sami
il 11 Mar 2021
Modificato: Mohammad Sami
il 11 Mar 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]*$'));
Più risposte (0)
Vedere anche
Categorie
Scopri di più su File Operations in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!