Я пытаюсь разобрать простую структуру предложений с помощью Boost.Это мой первый раз, когда я использую Boost, поэтому я могу сделать это совершенно неправильно.Я хочу принимать только строки в этом формате:
- Должен начинаться с буквы (без учета регистра)
- Может содержать:
- Буквенные символы
- Числовые символы
- Подчеркивание
- Дефисы
- Все остальные символы служат разделителями
Поскольку я надеваюНе знаю, какие символы являются моими разделителями (их может быть множество), я пытался сделать регулярное выражение, чувствительное к этому.Единственная проблема в том, что я получаю только последнюю букву каждого слова.Это заставляет меня верить, что мое регулярное выражение верно, но я не использую повышение.Вот мой код:
boost::regex regexp("[A-Za-z]([A-Za-z]|[0-9]|_|-)*", boost::regex::normal | boost::regbase::icase);
boost::sregex_token_iterator i(text.begin(), text.end(), regexp, 1);
boost::sregex_token_iterator j;
while(i != j){
cout << *i++ << std::endl;
}
Я смоделировал это после того, что нашел на веб-сайте Boost .Я использовал последний пример (внизу страницы) в качестве шаблона для построения mf-кода.В данном случае текст является объектом типа string.
Правильно ли мое регулярное выражение?Я правильно использую Boost?