Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Разбор имени файла при помощи boost reqex  (Прочитано 6591 раз)
0 Пользователей и 1 Гость смотрят эту тему.
AlexCasual
Помогающий

by
Offline Offline

« : 16-10-2015 11:27 » 

Всем привет, попытался использовать boost reqex для парсинга пути файла :
Код:
\Disk\Name\Folder\file
необходимо вычленить часть \Disk\Name и Folder\file, для этого использовал такой код :
Код:
 std::string s = "\\Disk\\Name\\Folder\\file.exe";
 boost::regex expr_a{"\\\w\\\w\\"};
 std::cout << std::boolalpha << boost::regex_match(s, expr) << '\n';

boost::regex expr_b{"(?<=\\\w\\\w)(.*)"};
 std::cout << std::boolalpha << boost::regex_match(s, expr) << '\n';
Но совпадений не нашлось( И я вообще не понимаю, как отследить совпадения "слэша" "\\"?

Код:
 std::string s = "\\file.exe";
 boost::regex expr_a{"\\\w+"};
 std::cout << std::boolalpha << boost::regex_match(s, expr) << '\n';
тоже не нашло совпадений...
Что я делаю не так?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 16-10-2015 13:14 » 

Цитата
Код:
 boost::regex expr_a{"\\\w\\\w\\"};

Зачем три бекслеша? Компилятор сделает из двух один. А вот код "\w" он не поймет. RegExp тоже нуждает в квотировании.

Исходный код: "\\\\\\w\\\\\\w\\\\"
Скомпиленный код: "\\\w\\\w\\"

Еще раз скажем спасибо MS за удачный выбор сепаратора пути.
« Последнее редактирование: 16-10-2015 13:17 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 18-10-2015 11:14 » 

можно также предварительно заменить в строке все "\\" на "/" , чтобы не барахтаться потом в куче бэкслешей )  Винда понимает прямой слеш
Записан

AlexCasual
Помогающий

by
Offline Offline

« Ответ #3 : 19-10-2015 14:32 » new

Ребята,всем спасибо, а то совсем с этими слэшами крыша поехала...
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines