RE2 и UTF16 (или UCS-2)

RE2 отлично. Быстро и детерминировано.

Тем не менее, он поддерживает только UTF8. Мои строки изначально UTF16, и преобразование туда-сюда снизит производительность.

Насколько сложно было бы реализовать собственные возможности UTF16 в RE2?

Насколько сложно было бы реализовать собственные возможности UCS-2 в RE2? (это должно быть проще)

т.е. сколько часов потребуется обычному программисту для этого.

Это беспокоило меня в течение нескольких недель, поэтому я подумал, что спросить!

2 ответа

Решение

Рассел Кокс, создатель RE2, любезно опубликовал патч для поддержки UCS-2. Некоторые утверждения, однако, не поддерживаются для UCS-2. Ответ от Руси дословно выложен:

Привет. В RE2 был режим UCS-2 до того, как я открыл его, но он не мог поддерживать утверждения типа ^, $ и \b, что ограничивало его полезность. Если вам не нужны эти операторы, то это, вероятно, будет работать для вас. Я не планирую повторно добавлять режим UCS-2 к источникам RE2, но я просто опубликовал diff для изменений, которые удалили его. Вы должны быть в состоянии полностью изменить diff в локальной копии, чтобы получить поддержку UCS-2. Файл ucs2.diff находится в корне репозитория Mercurial.

Наслаждаться.

Ссылка на код: http://code.google.com/p/re2/source/list

Вы спрашивали Расса Кокса, каково его мнение об ответе на ваш вопрос? Бьюсь об заклад, это слишком долго, чтобы думать.

Я действительно думаю, что вы переоцениваете стоимость преобразования из уродливого UTF-16 в обычный UTF-8 и недооцениваете стоимость перекодирования очень хорошо настроенной библиотеки.

Просто прикуси пулю и используй UTF-8, как и все остальные.

Я сам большой фанат RE2, но мне никогда не приходило в голову использовать его на UTF-16. UTF-16 просто не часть моего мира. Как и любая другая устаревшая кодировка, все, что мы получаем в UTF-16, немедленно обновляется до UTF-8, чтобы с ним могла работать вся цепочка инструментов, потому что мы запускаем цепочку из чисто UTF8.

Возможно, вы живете в противоположном мире?

Другие вопросы по тегам