Поиск пунктуации и специальных символов

Для поиска пунктуации можно использовать тот же синтаксис, что и для поиска слов, однако при поиске пунктуации кавычки обязательны.

Внутренние кавычки нужно экранировать обратным слешем или кавычками.

Несколько знаков, заключенных в кавычки, трактуются как последовательность.

Пример

"@" найдет все знаки «@» в тексте;

@ — ошибочная запись;

"?!" найдет все подстроки «?!» в тексте;

"\"" = """" найдет все двойные кавычки в тексте;

phrase("""", известия, """") найдет слово «известия» в кавычках, например в «газета "Известия" сообщает» (подробнее о функции phrase() см. в главе «Поиск аргументов в заданном порядке в пределах предложения»);

phrase("@", bank_of_russia or cb_rf) найдет «@bank_of_russia», «@cb_rf» (твиттер Центрального Банка РФ).

Пример задачи: Поиск упоминаний о компании «Сухой»

Для поиска упоминаний о компании «Сухой» можно составить запрос case(Сухой). Данный запрос ищет в тексте все формы слова «сухой» с заглавной буквы. Однако можно заметить, что данный запрос возвращает много ложных результатов.

pdl char 1 rus

Чтобы исключить ошибочные результаты, можно указать, что слово «Сухой» должно встречаться в кавычках. Это можно сделать с помощью следующего запроса:

pdl char 2 rus

Кроме того, для поиска знаков пунктуации, специальных символов (#, @, % …​) и токенов специальных категорий (см. ниже) используется функция char().

Синтаксис

char(категория [, аргумент_1, аргумент_2])

Параметр категория позволяет указать категорию токена и может принимать одно из нижеперечисленных значений:

Категория

Синоним

Пояснение

alpha

a

токены, состоящие только из алфавитных символов

alnum

an, alphanum

токены, состоящие из алфавитных и числовых символов

numeral

n, num

числа в любом написании (например, 125, 713.446.9307, 1-ый и т.д.)

digit

d

числа, состоящие только из цифр (без запятых, точек, слешей и т.д.)

special

sp

не алфавитные и не числовые символы (например, #, @, &, % и т.д.)

word

w

alpha|alnum|numeral|special

punct

p

любой пунктуационный знак

bracket

br

символ открывающей или закрывающей скобки

colon

col, ":"

символ двоеточия

comma

","

символ запятой

dot

"."

символ точки

exclamation

excl, "!"

символ восклицательного знака

hyphen

hp, "-"

символ тире/дефиса

lbracket

lb, "("

символ открывающей скобки

rbracket

rb, ")"

символ закрывающей скобки

question

qm, "?"

символ вопросительного знака

semicolon

sc, ";"

символ точки с запятой

slash

sl, "/"

символ слеш

quote

qt

символ любой кавычки

lquote

lqt

символ любой левой кавычки

rquote

rqt

символ любой правой кавычки

squote

sq, "'"

символ одинарной кавычки

lsquote

lsq, ‘

символ левой одинарной кавычки

rsquote

rsq, ’

символ правой одинарной кавычки

dquote

dq, "\""

символ двойной кавычки

ldquote

ldq, «

символ левой двойной кавычки

rdquote

rdq, »

символ правой двойной кавычки

plus

pl, "+"

символ плюс

plusminus

pm, ±

символ плюс-минус

equal

eq, "="

символ равно

less

ls, "<"

символ меньше

greater

gr, ">"

символ больше

tilde

td, ~

символ тильды

vline

vl, "|"

символ вертикальной черты

arabic

токены, состоящие из символов арабского алфавита

chinese

токены, состоящие из символов китайского алфавита

cyrillic

токены, состоящие из символов кириллического алфавита

greek

токены, состоящие из символов греческого алфавита

hiragana

токены, состоящие из символов алфавита хирагана

katakana

токены, состоящие из символов алфавита катакана

korean

токены, состоящие из символов корейского алфавита

latin

токены, состоящие из символов латинского алфавита

mixed

токены, состоящие из символов разных алфавитов

Несколько пунктуационных знаков, заключенных в кавычки, рассматриваются как последовательность, т.е. char("?!") находит ?!.

Если параметр категория является единственным аргументом, функция находит все токены указанной категории.

Пример

char(alnum) = char(an) находит все буквенно-цифровые токены («A7», «LAF006C», «AH-26» и т.д.).

char(digit) = char(d) находит все числа, состоящие только из цифр («7», «40», «2017» и т.д.).

char(special) = char(sp) находит символы, не являющиеся числом, словом или знаком пунктуации («@», «%», «&» и т.д.).

char(mixed) находит токены, состоящие из символов разных алфавитов («Cити-FM», «IT-продуктов»).

char(latin_greek) находит «interferon-β», «GSK-3β-dependent», «αB-crystallin», etc.

Если помимо параметра категория указаны другие аргументы, функция находит только те вхождения аргументов, которые соответствуют указанной категории токенов.

Чтобы сузить поиск, можно перечислить параметры категории и алфавита через знак нижнего подчеркивания «_». Категория может быть только одна, а алфавитные параметры не ограничены.

Пример

char(alpha, number()) находит числа, записанные прописью (number() находит числа, записанные как цифрами, так и прописью).

char(alpha, term(mylist)) находит слова из класса слов «mylist», содержащие только алфавитные символы.

char(latin_greek) находит «interferon-β», «GSK-3β-dependent», «αB-crystallin» и т.д.

char(alnum_greek) находит слова содержащие цифры и буквы только греческого алфавита («Δ6», «β2» и т.д.).

char(alpha_cyrillic) найдет слова, состоящие только из букв кириллицы.

char(alnum_latin_cyrillic) найдет слова, содержащие одновременно цифры, а также символы латинского и кириллического алфавита, например, «wp7-устройство», «к750i».

char(alpha_cyrillic|numeral) найдет слова, состоящие только из букв кириллицы или любые числа.