crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Фильтр каталогов на RegExp'ах, помогите подобрать регулярку
smooky
  опции профиля:
сообщение 30.10.2008, 1:57
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 28.10.2008
Пользователь №: 401

Спасибо сказали: 0 раз(а)




Репутация:   0  


// в дире нужны все поддиры которые в имени имеют хотя бы одну цифру или всё имя состоит из цифр
QDir dir("/mydir");
dir.setFilter(QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::Dirs);
dir.setSorting(QDir::Name);
QStringList strFilters;
strFilters << "^\\d?$"; // (нерабочее...) вот тут какое выражение надо написать?
dir.setNameFilters(strFilters);
QStringList dirList = dir.entryList(strFilters);
Причина редактирования: пользуемся тэгом code=cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 30.10.2008, 6:52
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(smooky @ 30.10.2008, 4:57) *
strFilters << "^\\d?$"; // (нерабочее...) вот тут какое выражение надо написать?
dir.setNameFilters(strFilters);
тут у тебя ошибка, методы:
void QDir::setNameFilters ( const QStringList & nameFilters )
QStringList QDir::entryList ( const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort ) const

не принимают регулярок. А только wildcards - символы подстановки (* ? и т.п.)


я не проверял, но думаю такое выражение должно удовлетворить твоему условию: [1234567890]
тогда получается так:
QDir        dir("/mydir");
QStringList    strFilters;
QStringList    dirList;

    strFilters << "[1234567890]";
    
    dir.setFilter(QDir::NoDotAndDotDot | QDir::NoSymLinks | QDir::Dirs);
    dir.setSorting(QDir::Name);
    dir.setNameFilters(strFilters);
    
    dirList = dir.entryList();


P.S. установка списка в строке
Цитата(smooky @ 30.10.2008, 4:57) *
dir.entryList(strFilters);

это лишнее т.к. ты уже задал фильтр имен в функции setNameFilters
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 12.7.2020, 19:43