Tôi đang cố gắng khớp một số đoạn dữ liệu nếu dữ liệu thú vị trong luồng dữ liệu.Tại sao không tăng regex '. {2}' match '??'
Cần có một số <
hàng đầu sau đó bốn ký tự chữ và số, hai ký tự kiểm tra (hoặc ??
nếu không có dấu hiệu nào được chỉ định) và đường nhỏ >
.
Nếu hai ký tự cuối cùng là chữ và số, mã sau hoạt động như mong đợi. Nếu chúng là ??
mặc dù nó không thành công.
// Set up a pre-populated data buffer as an example
std::string haystack = "Fli<data??>bble";
// Set up the regex
static const boost::regex e("<\\w{4}.{2}>");
std::string::const_iterator start, end;
start = haystack.begin();
end = haystack.end();
boost::match_flag_type flags = boost::match_default;
// Try and find something of interest in the buffer
boost::match_results<std::string::const_iterator> what;
bool succeeded = regex_search(start, end, what, e, flags); // <-- returns false
Tôi đã không phát hiện bất cứ điều gì trong the documentation mà gợi ý này nên là trường hợp (tất cả nhưng NULL và newline nên trận đấu AIUI).
Vì vậy, tôi đã bỏ lỡ những gì?
Trình biên dịch nào bạn đang sử dụng? Mine (gcc) đưa ra một cảnh báo rõ ràng nói rằng "trigraph ??> convert to}". – SingerOfTheFall
Tôi đang sử dụng studio hình ảnh 2013 với chuỗi công cụ năm 2008. –