Бөлісу құралы:


RegexMatch (запрос NoSQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Эта функция предоставляет возможности регулярного выражения. Регулярные выражения представляют собой компактный и гибкий формат записи условий для поиска в тексте по шаблону.

Примечание.

Azure Cosmos DB для NoSQL использует совместимые с PERL регулярные выражения (PCRE).

Синтаксис

RegexMatch(<string_expr_1>, <string_expr_2>, [, <string_expr_3>])  

Аргументы

Description
string_expr_1 Строковое выражение для поиска.
string_expr_2 Строковое выражение с регулярным выражением, определенным для использования при поиске string_expr_1.
string_expr_3(Необязательно) Необязательное строковое выражение с выбранными модификаторами для использования с регулярным выражением (string_expr_2). Если это не указано, по умолчанию выполняется сопоставление регулярных выражений без модификаторов.

Примечание.

Предоставление пустой строки для string_expr_3 функционально эквивалентно опущению аргумента.

Типы возвращаемых данных

Возвращает логическое выражение.

Примеры

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

SELECT VALUE {
    noModifiers: RegexMatch("abcd", "ABC"), 
    caseInsensitive: RegexMatch("abcd", "ABC", "i"), 
    wildcardCharacter: RegexMatch("abcd", "ab.", ""),
    ignoreWhiteSpace: RegexMatch("abcd", "ab c", "x"), 
    caseInsensitiveAndIgnoreWhiteSpace: RegexMatch("abcd", "aB c", "ix"),
    containNumberBetweenZeroAndNine: RegexMatch("03a", "[0-9]"),
    containPrefix: RegexMatch("salt3824908", "salt{1}"),
    containsFiveLetterWordStartingWithS: RegexMatch("shame", "s....", "i")
}
[
  {
    "noModifiers": false,
    "caseInsensitive": true,
    "wildcardCharacter": true,
    "ignoreWhiteSpace": true,
    "caseInsensitiveAndIgnoreWhiteSpace": true,
    "containNumberBetweenZeroAndNine": true,
    "containPrefix": true,
    "containsFiveLetterWordStartingWithS": true
  }
]

В следующем примере предполагается, что у вас есть контейнер с элементами, включая name поле.

[
  {
    "name": "Tecozow coat",
    "category": "winter-coats"
  },
  {
    "name": "Bladnick coat",
    "category": "winter-coats"
  },
  {
    "name": "Anidin heavy jacket",
    "category": "winter-coats"
  }
]

В этом примере в качестве фильтра используется сопоставление регулярных выражений для возврата подмножества элементов.

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.category = "winter-coats" AND    
    RegexMatch(p.name, " coat{1}")
[
  "Tecozow coat",
  "Bladnick coat"
]

Замечания

  • Эта функция выигрывает от индекса диапазона только в том случае, если регулярное выражение может быть разбито на либо StartsWith, EndsWithContainsлибо StringEquals эквивалентные системные функции.
  • Возвращает, undefined если строковое выражение для поиска (string_expr_1), регулярное выражение (string_expr_2) или выбранные модификаторы (string_expr_3) недопустимы.
  • Эта функция поддерживает следующие четыре модификатора: | | Формат | Описание | | --- | --- | --- | | Несколько строк | m | Обработайте строковое выражение для поиска в виде нескольких строк. Без этого параметра символы ^ и $ совпадения в начале или конце строки, а не каждая отдельная строка. | | Сопоставление любой строки | s | Разрешить "." соответствовать любому символу, включая новый символ. | | Игнорировать регистр | i | Игнорировать регистр при сопоставлении шаблонов. | | Игнорировать пробелы | x | Игнорировать все символы пробелов. |
  • Если вы хотите использовать мета-символ в регулярном выражении и не хотите, чтобы оно было специальным значением, следует избежать использования \метачарактера.