Ссылка, которую вы дали, - на статью блога, в которой содержится ссылка на другую статью блога о самом последнем выпуске, в которой есть много ворчливых комментариев, в том числе один, в котором говорится, что пакет не работает с «нелатинскими» (какими бы значит) кодировки. Что заставляет вас верить, что TRE работает с текстом в кодировке UTF-8 (работая на уровне символов, а не на уровне байтов)?
Вы не сообщаете нам, сколько ошибок (вставка, удаление, замена) приняты как нечеткое совпадение.
Вы не говорите нам, использует ли он подпрограммы char
или wchar
. Вы действительно ожидаете, что потенциальные ответчики загрузят пакет и прочитают код интерфейса Python?
Можно было бы ожидать, что если есть доступные подпрограммы wchar C ++, интерфейс Python будет включать в себя привязки, которые делают Python Unicode <-> Python str (кодируется в UTF-16LE) <-> C ++ wchar - не так?
Учитывая, что «рабочие» совпадения для 6-символьных тестовых случаев возвращаются с (0, 7), а один неработающий случай (строка 6) разделяет двухбайтовый символ (печатается как ?
, потому что ответ недействителен UTF-8), похоже, что он работает в режиме, независимом от кодирования байтов (символов) - вообще не очень хорошая идея.
Обратите внимание, что если все остальное терпит неудачу и все ваши входные данные на немецком языке, вы можете попробовать использовать кодировку latin1 или cp1252 в байтовом режиме.
Некоторые дальнейшие замечания:
Ваша строка3 избыточна - она такая же, как строка 2.
Ваше утверждение о том, что string5 "работает", кажется несовместимым с вашими утверждениями о том, что string2 и string3 "работают".
Ваше тестовое покрытие редкое; для этого нужно несколько несоответствующих случаев, которые гораздо ближе к сопоставлению, чем "Moskau"!
Вы должны убедиться, что он сначала «работает» с данными только для ASCII; Вот несколько тестов:
Berlxn Berlxyn
Bxrlin Bxyrlin
xerlin xyerlin
Bexlin Bexylin
xBerlin xyBerlin
Bxerlin Bxyerlin
Berlinx Berlinxy
erlin Brlin Berli
Затем запустите его с не-ASCII символами вместо каждого из x and
y` в приведенном выше списке.
Использование шаблона типа ". * Berlin" не очень полезно для диагностических целей, особенно если у вас нет значимых тестовых примеров "не должно совпадать".