У меня возникла очень странная проблема с tr1 :: regex (VS2008), причина которой я не могу выяснить. Код в конце поста компилируется нормально, но выдает исключение при достижении 4-го определения регулярного выражения во время выполнения:
Исключение Microsoft C ++: std :: tr1 :: regex_error в ячейке памяти 0x0012f5f4 ..
Однако единственное различие, которое я вижу (возможно, я слеп) между 3-м и 4-м, - это NumberOfComponents вместо SchemeVersion. Сначала я подумал, что, возможно, оба (3-й и 4-й) ошибочны, а ошибка от 3-го только что сработала в 4-м. Похоже, что это не так, поскольку я переместил их обоих и поместил несколько других определений регулярных выражений между ними. Строка всегда вызывает исключение.
Кто-нибудь знает, почему эта строка
std::tr1::regex rxNumberOfComponents("\\NumberOfComponents:(\\s*\\d+){1}");
вызывает исключение, но
std::tr1::regex rxSchemeVersion("\\SchemeVersion:(\\s*\\d+){1}");
нет? Время выполнения просто мешает мне?
Спасибо за время, чтобы прочитать это и за любые идеи.
T
PS: Я полностью уверен, что решение настолько простое, что я должен ударить головой о ближайшую стену, чтобы выровнять карму «глупого вопроса» ...
#include <regex>
int main(void)
{
std::tr1::regex rxSepFileIdent("Scanner Separation Configuration");
std::tr1::regex rxScannerNameIdent("\\ScannerName:((\\s*\\w+)+)");
std::tr1::regex rxSchemeVersion("\\SchemeVersion:(\\s*\\d+){1}");
std::tr1::regex rxNumberOfComponents("\\NumberOfComponents:(\\s*\\d+){1}");
std::tr1::regex rxConfigStartIdent("Configuration Start");
std::tr1::regex rxConfigEndIdent("Configuration End");
return 0;
}