Я пытаюсь разобрать текстовый файл, содержащий числовые данные. У меня есть много линий, которые выглядят какC++ регулярное выражение соответствия целая строка
129,3 72,7 121,6 173,6 203,3 120,7 40,5 79,2 94,0 123,2 165,8 178,8 135,5 78,5 66,2
, но длина линий меняется. Каждой строке также предшествует несколько пробелов. Я хотел бы использовать регулярные выражения для синтаксического анализа строки и поместить каждое число в массив, который затем я смогу обработать позже.
Использование
std::getline(is, line);
std::tr1::regex rx("[0-9-\.]+");
std::tr1::cmatch res;
std::tr1::regex_search(line.c_str(), res, rx);
соответствует только первым номером. Если вместо этого я использую якоря линии, такие как
"^[0-9-\.]+$"
"^[0-9-\.]+"
я не получаю матчей и
"[0-9-\.]+$"
просто совпадает с последним номером. Поэтому я, вероятно, что-то делаю неправильно. Спасибо за любую помощь.
res - это массив, то есть res [1], res [2], res [3] ... должны иметь ваши совпадения. Вы проверили это или просто получаете разрешение? –
regexp действительно не лучшее решение здесь, просто использование оператора >> в float гораздо проще в использовании и намного лучше подходит. – PlasmaHH
Я согласен с PlasmaHH, но кто знает, по какой причине, кто-то хочет играть с регулярным выражением ... –