RegexMatch (dotaz NoSQL)
PLATÍ PRO: NoSQL
Tato funkce poskytuje funkce regulárního výrazu. Regulární výrazy jsou stručné a flexibilní notace pro hledání vzorů textu.
Poznámka:
Azure Cosmos DB for NoSQL používá regulární výrazy kompatibilní s PERL (PCRE).
Syntaxe
RegexMatch(<string_expr_1>, <string_expr_2>, [, <string_expr_3>])
Argumenty
Popis | |
---|---|
string_expr_1 |
Řetězcový výraz, který se má prohledávat. |
string_expr_2 |
Řetězcový výraz s regulárním výrazem definovaným pro použití při vyhledávání string_expr_1 . |
string_expr_3 (Volitelné) |
Volitelný řetězcový výraz s vybranými modifikátory, které se mají použít s regulárním výrazem (string_expr_2 ). Pokud není zadaný, je výchozím nastavením spustit shodu regulárního výrazu bez modifikátorů. |
Poznámka:
Poskytnutí prázdného řetězce pro string_expr_3
je funkčně ekvivalentní vynechání argumentu.
Návratové typy
Vrátí logický výraz.
Příklady
Následující příklad znázorňuje shodu regulárního výrazu pomocí několika různých modifikátorů.
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
}
]
V dalším příkladu se předpokládá, že máte kontejner s položkami včetně name
pole.
[
{
"name": "Tecozow coat",
"category": "winter-coats"
},
{
"name": "Bladnick coat",
"category": "winter-coats"
},
{
"name": "Anidin heavy jacket",
"category": "winter-coats"
}
]
Tento příklad používá shodu regulárního výrazu jako filtr k vrácení podmnožina položek.
SELECT VALUE
p.name
FROM
products p
WHERE
p.category = "winter-coats" AND
RegexMatch(p.name, " coat{1}")
[
"Tecozow coat",
"Bladnick coat"
]
Poznámky
- Tato funkce je přínosná z indexu rozsahu pouze v případě, že regulární výraz lze rozdělit do funkcí
StartsWith
,EndsWith
,Contains
neboStringEquals
ekvivalentních systémových funkcí. - Vrátí
undefined
, pokud řetězcový výraz, který má být prohledán (string_expr_1
), regulární výraz (string_expr_2
) nebo vybrané modifikátory (string_expr_3
) jsou neplatné. - Tato funkce podporuje následující čtyři modifikátory: | | Formát | Popis | | --- | --- | --- | | Více řádků |
m
| Nakládat s řetězcovým výrazem, který má být prohledán jako více řádků. Bez této možnosti jsou znaky^
a$
shody na začátku nebo konci řetězce, a ne na každém jednotlivém řádku. | | Shoda s libovolným řetězcem |s
| Povolit znak "." odpovídá libovolnému znaku, včetně znaku nového řádku. | | Ignorovat malá a velká písmena |i
| Při porovnávání vzorů ignorujte malá a velká písmena. | | Ignorovat prázdné znaky |x
| Ignorujte všechny prázdné znaky. | - Pokud chcete v regulárním výrazu použít metaznak a nechcete, aby měl zvláštní význam, měli byste metacharakter použít .
\