Condividi tramite


RegexMatch (query NoSQL)

SI APPLICA A: NoSQL

Questa funzione fornisce funzionalità di espressione regolare. Le espressioni regolari sono un metodo di notazione conciso e flessibile per la ricerca di testo che soddisfa determinati criteri.

Nota

Azure Cosmos DB per NoSQL usa espressioni regolari compatibili con PERL (PCRE).

Sintassi

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

Argomenti

Descrizione
string_expr_1 Espressione stringa in cui eseguire la ricerca.
string_expr_2 Espressione stringa con un'espressione regolare definita da usare durante la ricerca di string_expr_1.
string_expr_3(Facoltativo) Espressione stringa facoltativa con i modificatori selezionati da usare con l'espressione regolare (string_expr_2). Se non specificato, l'impostazione predefinita consiste nell'eseguire la corrispondenza dell'espressione regolare senza modificatori.

Nota

Fornire una stringa vuota per string_expr_3 è funzionalmente equivalente all'omissione dell'argomento.

Tipi restituiti

Restituisce un'espressione booleana.

Esempi

Nell'esempio seguente vengono illustrate le corrispondenze di espressioni regolari usando alcuni modificatori diversi.

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

Nell'esempio seguente si presuppone che sia presente un contenitore con elementi che includono un name campo.

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

In questo esempio viene utilizzata una corrispondenza di espressione regolare come filtro per restituire un subset di elementi.

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

Osservazioni:

  • Questa funzione trae vantaggio da un indice di intervallo solo se l'espressione regolare può essere suddivisa in StartsWithfunzioni di sistema equivalenti , EndsWithContains, o StringEquals .
  • Restituisce undefined se l'espressione stringa da cercare (string_expr_1), l'espressione regolare (string_expr_2) o i modificatori selezionati (string_expr_3) non sono validi.
  • Questa funzione supporta i quattro modificatori seguenti: | | Formato | Descrizione | | --- | --- | --- | | Più righe | m | Considerare l'espressione stringa da cercare come più righe. Senza questa opzione, i caratteri ^ e $ le corrispondenze all'inizio o alla fine della stringa e non a ogni singola riga. | | Trova la corrispondenza con qualsiasi stringa | s | Consenti a "." di trovare la corrispondenza con qualsiasi carattere, incluso un carattere di nuova riga. | | Ignora maiuscole/minuscole | i | Ignorare la distinzione tra maiuscole e minuscole quando i criteri di ricerca corrispondono. | | Ignora spazi vuoti | x | Ignorare tutti i caratteri di spazio vuoto. |
  • Se si vuole usare un meta-carattere in un'espressione regolare e non si vuole che abbia un significato speciale, è consigliabile eseguire l'escape del metacaracter usando \.