RegexMatch (NoSQL クエリ)
適用対象: NoSQL
この関数は、正規表現の機能を提供します。 正規表現は、テキストのパターンを見つけるための簡潔で柔軟性の高い表記法です。
注意
Azure Cosmos DB for NoSQL では、PERL 互換正規表現 (PCRE) を使用します。
構文
RegexMatch(<string_expr_1>, <string_expr_2>, [, <string_expr_3>])
引数
説明 | |
---|---|
string_expr_1 |
検索対象となる STRING 式。 |
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
のいずれかの等価なシステム関数に分解できる場合のみ範囲インデックスの恩恵を得られます。 - 検索対象の文字列式 (
string_expr_1
)、正規表現 (string_expr_2
)、または選択した修飾子 (string_expr_3
) が無効な場合は、undefined
が返されます。 - この関数は、次の 4 つの修飾子をサポートしています: | |書式 |説明 | |--- |--- |--- | | 複数行 |
m
| 複数行として検索される文字列式を扱います。 このオプションを指定しないと、^
と$
は文字列の先頭または末尾で一致し、個々の行それぞれには一致しません。 | | 任意の文字列の一致 |s
| 改行文字を含む任意の文字に一致する "." を使用できるようにします。 | | 大文字と小文字を区別しない |i
| パターン マッチング時には、大文字と小文字は区別されません。 | | 空白文字を無視する |x
| すべての空白文字を無視します。 | - 正規表現内でメタ文字を使用する必要があり、それに特別な意味を持たせたくない場合は、
\
を使用してメタ文字をエスケープする必要があります。