RegexMatch (NoSQL 查詢)
適用於:NoSQL
此函式提供正則表示式功能。 規則運算式可用於尋找文字模式,是既簡明、又有彈性的標記法。
注意
適用於 NoSQL 的 Azure Cosmos DB 會使用 PERL 相容的正規表示式 (PCRE) 。
語法
RegexMatch(<string_expr_1>, <string_expr_2>, [, <string_expr_3>])
引數
描述 | |
---|---|
string_expr_1 |
要搜尋的字串表達式。 |
string_expr_2 |
字串表示式,其正則表達式定義為在搜尋 string_expr_1 時使用。 |
string_expr_3 (選擇性) |
選擇性字串表示式,其中包含要搭配正則表示式使用的選取修飾詞 (string_expr_2 )。 如果未提供,則預設值為執行正則表達式比對,且沒有修飾詞。 |
注意
提供的空字串 string_expr_3
在功能上相當於省略自變數。
傳回類型
傳回布爾表達式。
範例
下列範例說明使用幾個不同修飾詞的正則表達式相符專案。
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
}
]
下一個範例假設您有包含字段專案的 name
容器。
[
{
"name": "Tecozow coat",
"category": "winter-coats"
},
{
"name": "Bladnick coat",
"category": "winter-coats"
},
{
"name": "Anidin heavy jacket",
"category": "winter-coats"
}
]
此範例會使用正則表達式比對做為篩選條件來傳回專案的子集。
SELECT VALUE
p.name
FROM
products p
WHERE
p.category = "winter-coats" AND
RegexMatch(p.name, " coat{1}")
[
"Tecozow coat",
"Bladnick coat"
]
備註
- 只有當正則表示式可以細分為
StartsWith
、、EndsWith
Contains
或StringEquals
對等系統函式時,此函式才受益於範圍索引。 undefined
如果要搜尋的字串表示式 (string_expr_1
)、正規表示式 (string_expr_2
) 或選擇的修飾詞 (string_expr_3
) 無效,則傳回 。- 此函式支援下列四個修飾詞: | |格式 |描述 | |--- |--- |--- | | 多行 |
m
|將字串表示式視為多行搜尋。 如果沒有此選項,字元^
和$
會比對字串的開頭或結尾,而不是每個個別行。 | | 比對任何字串 |s
|允許 「.」 比對任何字元,包括換行符。 | | 忽略大小寫 |i
|忽略模式比對時的案例。 | | 忽略空格符 |x
|忽略所有空格符。 | - 如果您想要在正則表示式中使用元字元,而且不想讓它具有特殊意義,您應該使用
\
逸出中繼字元。