RegEx. \ б для кириллических символов - PullRequest
2 голосов
/ 16 апреля 2019

Скажите, пожалуйста, что можно использовать вместо \ b для выделения слов в кириллическом тексте?

У меня есть текст "текст" в столбце базы данных SQLite.

это работает:

select * from myTable where text REGEXP 'текст'

это не работает:

select * from myTable where text REGEXP '\bтекст\b'

1 Ответ

2 голосов
/ 16 апреля 2019

Оказывается, ваша реализация SQLite REGEXP основана на PCRE.

Вы можете настроить \b Unicode, используя глагол (*UCP) PCRE:

'(*UCP)\bтекст\b'

Некоторые подробности о глаголе в pcrepattern man page :

Другая специальная последовательность, которая может появиться в начале шаблона, - (*UCP).Это имеет тот же эффект, что и установка параметра PCRE_UCP: это приводит к тому, что последовательности, такие как \d и \w, используют свойства Unicode для определения типов символов вместо распознавания только символов с кодами меньше 128 через таблицу поиска.

И позже:

Обратите также внимание, что PCRE_UCP влияет на \b и \B, поскольку они определены в терминах \w и \W.Совпадение этих последовательностей заметно медленнее, если установлено PCRE_UCP.

Что ж, это будет медленнее, поскольку теперь ему приходится иметь дело со всей таблицей Юникода.

...