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