2013-02-25 71 views
11

Tôi đang thử một kết hợp regex khá đơn giản trong C++ 11 (sử dụng gcc 4.7.2), nhưng tôi đang gặp một số lượng lớn rắc rối. Cố gắng xây dựng một mô hình sử dụngC++ 11 Regex Matching

std::regex unquoted(R"regex(\s*([^",]+)\s*)regex"); 

gây các nhà xây dựng để ném một ngoại lệ std::regex_error với mã std::regex_constants::error_escape. Một số người kiểm tra trực tuyến regex không có vấn đề với cùng một biểu thức, và tôi đã thử sử dụng một số tùy chọn cú pháp khác nhau để không có kết quả. Có một cái gì đó về cơ bản khác nhau về cú pháp regex C++ mà tôi không nắm bắt?

+0

Bạn không thoát khỏi báo giá ở giữa đó –

+10

[Vâng tôi đã làm] (http://en.wikipedia.org/wiki/C%2B%2B11#New_string_literals) –

+8

Regex của GCC bị hỏng/không được triển khai. – Xeo

Trả lời

17

Xem gcc's stdc++11 implementation status page - regexes không được hỗ trợ như của gcc 4.8

Chỉnh sửa cho hậu thế: Như đã đề cập trong các ý kiến, thư viện regex hiện đang ở libstdc++ và phải ở trong gcc 4.9 và trên.

+0

Tôi đã thử xây dựng nó bằng tiếng kêu và có kết quả tương tự - đó là bởi vì bất kể trình biên dịch tôi sử dụng, hệ thống của tôi đang sử dụng cùng thư viện chuẩn C++ như thế nào? –

+3

Theo http://libcxx.llvm.org /, thư viện chuẩn C++ của clang nên hỗ trợ regex, nhưng chỉ được sử dụng mặc định trên OSX Trên các nền tảng khác, clang sử dụng thư viện chuẩn C++ bản địa mặc định –

+0

'boost :: regex' rồi. Cứu giúp! –