Udostępnij za pośrednictwem


RegexMatch (zapytanie NoSQL)

DOTYCZY: NoSQL

Ta funkcja zapewnia możliwości wyrażeń regularnych. Wyrażenia regularne to zwięzła i elastyczna notacja służąca do znajdowania wzorców tekstu.

Uwaga

Usługa Azure Cosmos DB for NoSQL używa wyrażeń regularnych zgodnych z algorytmem PERL (PCRE).

Składnia

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

Argumenty

opis
string_expr_1 Wyszukiwane jest wyrażenie ciągu.
string_expr_2 Wyrażenie ciągu z wyrażeniem regularnym zdefiniowanym do użycia podczas wyszukiwania string_expr_1.
string_expr_3(Opcjonalnie) Opcjonalne wyrażenie ciągu z wybranymi modyfikatorami do użycia z wyrażeniem regularnym (string_expr_2). Jeśli nie zostanie podana, wartością domyślną jest uruchomienie wyrażenia regularnego zgodnego z bez modyfikatorów.

Uwaga

Podanie pustego ciągu dla string_expr_3 elementu jest funkcjonalnie równoważne z pominięciem argumentu.

Typy zwracane

Zwraca wyrażenie logiczne.

Przykłady

Poniższy przykład ilustruje dopasowania wyrażeń regularnych przy użyciu kilku różnych modyfikatorów.

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
  }
]

W następnym przykładzie przyjęto założenie, że masz kontener z elementami, w tym polem name .

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

W tym przykładzie użyto dopasowania wyrażenia regularnego jako filtru w celu zwrócenia podzestawu elementów.

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

Uwagi

  • Ta funkcja korzysta z indeksu zakresu tylko wtedy, gdy wyrażenie regularne może zostać podzielone na StartsWithfunkcje systemowe , , EndsWithContainslub StringEquals równoważne.
  • Zwraca wartość undefined , jeśli wyrażenie ciągu do przeszukania (string_expr_1), wyrażenie regularne (string_expr_2) lub wybrane modyfikatory (string_expr_3) są nieprawidłowe.
  • Ta funkcja obsługuje następujące cztery modyfikatory: | | Format | Opis | | --- | --- | --- | | Wiele wierszy | m | Traktuj wyrażenie ciągu, które ma być wyszukiwane jako wiele wierszy. Bez tej opcji znaki ^ i $ pasują na początku lub na końcu ciągu, a nie na każdym wierszu. | | Dopasuj dowolny ciąg | s | Zezwól na dopasowanie znaku "." do dowolnego znaku, w tym znaku nowego wiersza. | | Ignoruj wielkość liter | i | Ignoruj wielkość liter podczas dopasowywania wzorca. | | Ignoruj białe znaki | x | Ignoruj wszystkie znaki odstępów. |
  • Jeśli chcesz użyć meta-znaku w wyrażeniu regularnym i nie chcesz, aby miało to specjalne znaczenie, należy użyć metatypu przy użyciu polecenia \.