Разбить строку регулярным выражением

267
02 декабря 2017, 09:45

При составлении регулярного выражения не получается сохранить каждую часть входного пути. Входная строка:

path = "L:/Dir/Directory/";
regex e("^([A-Z]):/(([A-Za-z]+)/)*$");
if (regex_search(path, m, e, fl))...

При данном регулярном выражении в массив m сохраняется первая большая буква ("L") и последняя часть пути "Directory". Нужно, чтобы сохранялись все части входного пути (в том числе и "Dir").

Answer 1

Проще всего в данном случае разбить строку на части с помощью :?/ (:? находит 1 или 0 знаков :, а / находит 1 /):

#include <iostream>
#include <string>
#include <vector>
#include <regex>
using namespace std;
int main() {
    regex rx(":?/");
    string path = "L:/Dir/Directory/";
    vector<string> names(sregex_token_iterator(path.begin(), path.end(), rx, -1),
                               sregex_token_iterator());
    for( auto & p : names ) cout << p << endl;
    return 0;
}

Результат работы программы:

L
Dir
Directory
READ ALSO
Повторный вызов функции меню

Повторный вызов функции меню

Подскажите пожалуйста, это функция для менюКаждый раз, когда сыграна какая-то из игр, я вызываю функцию чтобы вернуться с меню

311
Проблема с Intent

Проблема с Intent

Мне нужно отправить ссылку через Intent

288
Jetty 9: Static files для виртуального хоста

Jetty 9: Static files для виртуального хоста

Здравствуйте, По этой доке wwweclipse

239