Dela via


RegexMatch (NoSQL-fråga)

GÄLLER FÖR: NoSQL

Den här funktionen tillhandahåller funktioner för reguljära uttryck. Reguljära uttryck är en koncis och flexibel notation för att hitta textmönster.

Anteckning

Azure Cosmos DB for NoSQL använder PERL-kompatibla reguljära uttryck (PCRE).

Syntax

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

Argument

Description
string_expr_1 Ett stränguttryck som ska sökas igenom.
string_expr_2 Ett stränguttryck med ett reguljärt uttryck som definierats att använda när du söker i string_expr_1.
string_expr_3(Valfritt) Ett valfritt stränguttryck med de valda modifierarna som ska användas med det reguljära uttrycket (string_expr_2). Om inget anges är standardinställningen att köra den reguljära uttrycksmatchningen utan modifierare.

Anteckning

Att ange en tom sträng för string_expr_3 är funktionellt likvärdigt med att utelämna argumentet.

Returtyper

Returnerar ett booleskt uttryck.

Exempel

I följande exempel visas reguljära uttrycksmatchningar med hjälp av några olika modifierare.

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

I nästa exempel förutsätts att du har en container med objekt inklusive ett name fält.

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

I det här exemplet används en reguljär uttrycksmatchning som ett filter för att returnera en delmängd av objekten.

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

Kommentarer

  • Den här funktionen drar endast nytta av ett intervallindex om det reguljära uttrycket kan delas upp i antingen StartsWith, EndsWith, Containseller StringEquals motsvarande systemfunktioner.
  • Returnerar undefined om stränguttrycket som ska sökas (string_expr_1), det reguljära uttrycket (string_expr_2) eller de valda modifierarna (string_expr_3) är ogiltiga.
  • Den här funktionen stöder följande fyra modifierare: | | Format | Beskrivning | | | --- | --- | --- | | Flera rader | m | Behandla stränguttrycket som ska genomsökas som flera rader. Utan det här alternativet matchar tecknen ^ och $ i början eller slutet av strängen och inte varje enskild rad. | | Matcha valfri sträng | s | Tillåt "." för att matcha alla tecken, inklusive ett nytt radtecken. | | Ignorera ärende | i | Ignorera skiftläge när mönstermatchning. | | Ignorera tomt utrymme | x | Ignorera alla blankstegstecken. |
  • Om du vill använda ett metatecken i ett reguljärt uttryck och inte vill att det ska ha någon särskild betydelse bör du undvika metakarakteraren med hjälp av \.