Spec-Zone.ru › RethinkDB java

Команда ReQL: match

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

string.match(regexp) → null/object

Описание

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

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

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

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

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

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

r.table("users").filter(doc -> doc.g("name").match("^A")).run(conn);

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

r.table("users").filter(doc -> doc.g("name").match("n$")).run(conn);

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

r.table("users").filter(doc -> doc.g("name").match("li")).run(conn);

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

r.table("users").filter(doc -> doc.g("name").match("(?i)^john$")).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"
        }
    ]
}

Затем можно извлечь домен с помощью g() и nth.

r.expr("name@domain.com").match(".*@(.*)").g("groups").nth(0)
 .g("str").run(conn);

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

Пример: Ошибка при разборе имени домена вернёт null.

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/java/match/

Spec-Zone.ru

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