Сообщение Re: Nitra и UTF-16 от 21.04.2016 18:27
Изменено 21.04.2016 18:27 VladD2
Здравствуйте, WolfHound, Вы писали:
WH>
Это вообще не верный код. У автомат на первом символе всегда сожрет один любой.
Должно быть что-то вроде:
Вот тогда он сожрет или правильную сурогатную пару, или два отдельных символа, в которых может быть грязь.
WH>
WH>regex HighSurrogates = ['\uD800'..'\uDBFF'];
WH>regex LowSurrogates = ['\uDC00'..'\uDFFF'];
WH>regex Any = HighSurrogates LowSurrogates | ['\u0000'..'\uFFFF'];
WH>
Это вообще не верный код. У автомат на первом символе всегда сожрет один любой.
Должно быть что-то вроде:
regex Any16 = ['\u0000'..'\uFFFF'];
regex HighSurrogate = ['\uD800'..'\uDBFF'];
regex NonSurrogate = Any16 - HighSurrogate;
regex Any = HighSurrogate Any16 | NonSurrogate;
Вот тогда он сожрет или правильную сурогатную пару, или два отдельных символа, в которых может быть грязь.
Здравствуйте, WolfHound, Вы писали:
WH>
Это вообще не верный код. У автомат на первом символе всегда сожрет один любой.
Должно быть что-то вроде:
Вот тогда он сожрет или правильную сурогатную пару, или два отдельных символа, в которых может быть грязь.
WH>
WH>regex HighSurrogates = ['\uD800'..'\uDBFF'];
WH>regex LowSurrogates = ['\uDC00'..'\uDFFF'];
WH>regex Any = HighSurrogates LowSurrogates | ['\u0000'..'\uFFFF'];
WH>
Это вообще не верный код. У автомат на первом символе всегда сожрет один любой.
Должно быть что-то вроде:
regex Any16 = ['\u0000'..'\uFFFF'];
regex HighSurrogate = ['\uD800'..'\uDBFF'];
regex NonSurrogate = Any16 - HighSurrogate;
regex Any = HighSurrogate Any16 | NonSurrogate;
Вот тогда он сожрет или правильную сурогатную пару, или два отдельных символа, в которых может быть грязь.