Russian Qt Forum
Ноябрь 24, 2024, 11:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Помогите с регулярными выражениями  (Прочитано 2577 раз)
Yegor
Гость
« : Июнь 26, 2015, 12:16 »

Здравствуйте!

Мне нужно проверить строку на соответствие, с помощью регулярных выражений. Строка - имя жесткого диска, который может иметь вид, например:

  • \\?\PhysicalDrive0
  • \\?\PhysicalDrive1
  • \\?\PhysicalDrive2

и т.д.

То есть имена могут отличаться только числом в самом конце строки. Мне нужно составить шаблон для такой проверки.
Для этого использую класс QRegExp. Для него устанавливаю язык регулярных выражений - Perl:

QRegExp regExp;
regExp.setPatternSyntax(QRegExp::RegExp2);


И составляю шаблон для проверки:

const QString strRegExpPattern = "^\\\\?\\PhysicalDrive([\\d])+$";

Но такой шаблон не срабатывает. А срабатывает только при условии, если убрать из него символ '^'. А меня это не устраивает, мне ведь нужно, чтобы левая часть строки шаблона находилась в самом начале проверяемой строки.

Подскажите, пожалуйста, что неправильно в шаблоне:

^\\\\?\\PhysicalDrive([\\d])+$

для строк типа \\?\PhysicalDrive0

Ну, или если не выходит, то подскажите шаблон на другом языке, который поддерживает QRegExp
« Последнее редактирование: Июнь 26, 2015, 13:45 от Yegor » Записан
Johnik
Крякер
****
Offline Offline

Сообщений: 339


Просмотр профиля
« Ответ #1 : Июнь 26, 2015, 13:07 »

У вас мало экранирующих косых черт  Подмигивающий . Вот код:
Код
C++ (Qt)
QString s1 = "\\\\?\\PhysicalDrive0";
QString s2 = "\\\\?\\PhysicalDrive1";
QString s3 = "\\\\?\\PhysicalDrive2";
 
QRegExp r("^\\\\\\\\\\?\\\\PhysicalDrive([\\d])+$", Qt::CaseSensitive, QRegExp::RegExp2);
qDebug() << r.exactMatch(s1);
qDebug() << r.capturedTexts();
qDebug() << r.exactMatch(s2);
qDebug() << r.capturedTexts();
qDebug() << r.exactMatch(s3);
qDebug() << r.capturedTexts();
 

Записан
Yegor
Гость
« Ответ #2 : Июнь 26, 2015, 13:46 »

Помогло. Спасибо большое!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.07 секунд. Запросов: 23.