Spec-Zone.ru › RethinkDB python

Команда ReQL: match

Синтаксис команды

string.match(regexp) → None/object

Описание

Сопоставляет строку с регулярным выражением. Если совпадение найдено, возвращает объект с полями:

  • str: Совпавшая строка
  • start: Начало совпавшей строки
  • end: Конец совпавшей строки
  • groups: Группы захвата, определённые в скобках

Если совпадение не найдено, возвращает None.

Поддерживает синтаксис RE2. Для выполнения нечувствительного к регистру поиска добавьте префикс (?i). См. документацию RE2 для других флагов.

Команда match не поддерживает обратные ссылки.

Пример: Получить всех пользователей, чьё имя начинается с «A». Так как None вычисляется как false в фильтре, можно просто использовать результат match для предиката.

r.table('users').filter(lambda doc:
    doc['name'].match("^A")
).run(conn)

Пример: Получить всех пользователей, чьё имя заканчивается на «n».

r.table('users').filter(lambda doc:
    doc['name'].match("n$")
).run(conn)

Пример: Получить всех пользователей, чьё имя содержит «li».

r.table('users').filter(lambda doc:
    doc['name'].match("li")
).run(conn)

Пример: Получить всех пользователей, чьё имя «John» (нечувствительно к регистру).

r.table('users').filter(lambda doc:
    doc['name'].match("(?i)^john$")
).run(conn)

Пример: Получить всех пользователей, чьё имя состоит только из символов от «a» до «z».

r.table('users').filter(lambda doc:
    doc['name'].match("(?i)^[a-z]+$")
).run(conn)

Пример: Получить всех пользователей, чьё почтовое индекс состоит из 5 цифр.

r.table('users').filter(lambda doc:
    doc['zipcode'].match("\d{5}")
).run(conn)

Пример: Извлечь домен из почтового адреса.

r.expr("name@domain.com").match(".*@(.*)").run(conn)

Результат:

{
    "start": 0,
    "end": 20,
    "str": "name@domain.com",
    "groups":[
        {
            "end": 17,
            "start": 7,
            "str": "domain.com"
        }
    ]
}

Затем можно извлечь домен с помощью селектора [].

r.expr("name@domain.com").match(".*@(.*)")["groups"][0]["str"].run(conn)

Возвращает 'domain.com'

Пример: Не удалось разобрать домен, возвращается None.

r.expr("name[at]domain.com").match(".*@(.*)").run(conn)

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/python/match/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API