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, Containsnebo StringEquals 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 .\