2017-04-23 34 views
1

儘管我自己測試了一段時間,但我仍然不確定以下是否有任何影響。說我有形式C++ 11正則表達式和字符串u8前綴

regex reg(R"(\s+)" + a + R"(\s+(.*?)\s+)" + b + R"(\s+)", regex_constants::icase); 

其中A和B是與一些內容

string a = u8"größer"; 
string b = u8"grüner"; 

是用UTF-8的內容串字符串的正則表達式(我把隨機的例子,有可能以及是一些阿拉伯語或其他)。

我的問題是以下是否對結果沒有任何影響:我在沒有我的測試已經注意到差異

regex reg(u8R"(\s+)" + a + u8R"(\s+(.*?)\s+)" + b + u8R"(\s+)", regex_constants::icase); 

,結果始終是有和無的U8前綴相同。那麼,這真的沒用嗎,或者是我還沒有遇到一些隱藏的效果嗎?

回答

2

u8前綴對字符串文字的唯一影響是文字應該是保證要以UTF-8編碼。允許實現將不帶符號的字面值編碼爲UTF-8,但實現會因實現而異。

u8前綴並不能保證您的正則表達式引擎實際上理解Unicode案例摺疊。它也不保證它理解Unicode時期;機率很好,它是基於字節序列處理匹配,而不是基於Unicode規則。