RegexMatch (NoSQL-fråga)
GÄLLER FÖR: NoSQL
Den här funktionen tillhandahåller reguljära uttrycksfunktioner. Reguljära uttryck är en koncis och flexibel notation för att hitta textmönster.
Kommentar
Azure Cosmos DB för NoSQL använder PERL-kompatibla reguljära uttryck (PCRE).
Syntax
RegexMatch(<string_expr_1>, <string_expr_2>, [, <string_expr_3>])
Argument
beskrivning | |
---|---|
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 modifierare som ska användas med det reguljära uttrycket (string_expr_2 ). Om det inte anges är standardinställningen att köra matchningen av reguljära uttryck utan modifierare. |
Kommentar
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 uttryck som matchar 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 objekt.
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
,Contains
ellerStringEquals
motsvarande systemfunktioner. - Returnerar
undefined
om stränguttrycket som ska sökas (string_expr_1
), reguljärt uttryck (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 skiftläge |i
| Ignorera skiftläge vid mönstermatchning. | | Ignorera blanksteg |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 metakaraktern med hjälp av
\
.