虽然我已经对自己进行了一段时间的测试,但我仍然不确定以下是否会产生任何影响。假设我有一个表格的正则表达式
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前缀时始终相同。那么,这真的没用,还是有一些隐藏的效果,我还没有遇到过呢?
答案 0 :(得分:2)
u8
前缀对字符串文字的唯一影响是文字应保证以UTF-8编码。允许实现将未加前缀的文字编码为UTF-8,但是从实现到实现会有所不同。
例如,u8
前缀并不能保证您的正则表达式引擎真正理解Unicode案例折叠。它也不保证它理解Unicode时期;根据字节序列而不是基于Unicode规则处理匹配的几率很好。