2013-03-29 13 views
6

Tôi muốn nhận được một regex mà chỉ có thể phù hợp với một chuỗi bao gồm các ký tự Trung Quốc và không có tiếng Anh hoặc bất kỳ nhân vật khác. [\ u4e00- \ u9fa5] hoàn toàn không hoạt động và [^ x00-xff] sẽ khớp với tình huống bằng dấu chấm câu hoặc ký tự ngôn ngữ khác.Làm cách nào để tôi có thể đối sánh chuỗi chỉ bằng chữ cái Trung Quốc bằng regex?

boost::wregex reg(L"\\w*"); 
bool b = boost::regex_match(L"我a", reg); // expected to be false 
b = boost::regex_match(L"我,", reg);   // expected to be false 
b = boost::regex_match(L"我", reg);   // expected to be true 
+0

@NicolBolas: Câu hỏi là về 'boost :: regex', không phải C++ 11' std :: regex'. – MSalters

+0

@MSalters: Đủ công bằng. –

Trả lời

0

Regex sau hoạt động tốt.

boost::wregex reg(L"^[\u4e00-\u9fa5]+"); 
2

Tăng cường với ICU can use character classes. Tôi nghĩ bạn đang tìm kiếm tập lệnh \p{Han}. Ngoài ra, U + 4E00..U + 9FFF là \p{InCJK_Unified_Ideographs}