RegexMatch(NoSQL 查询)
适用范围: NoSQL
此函数提供正则表达式功能。 正则表达式是简明而灵活的表示法,用于找到文本的模式。
语法
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
等效系统函数时,此函数才会受益于范围索引。 - 如果要搜索的字符串表达式(
string_expr_1
)、正则表达式(string_expr_2
)或所选修饰符(string_expr_3
)无效,则返回undefined
。 - 此函数支持以下四个修饰符:| |格式|说明| | --- | --- | --- | | 多行 |
m
|将要搜索的字符串表达式视为多行。 如果没有此选项,字符^
和$
将在字符串的开头或结尾匹配,而不是在每一行匹配。 | | 匹配任何字符串 |s
|允许使用“.”来匹配任何字符,包括换行符。 | | 忽略大小写 |i
|模式匹配时忽略大小写。 | | 忽略空格 |x
|忽略所有空格字符。 | - 如果希望在正则表达式中使用元字符,并且不希望它具有特殊的含义,则应使用
\
对该元字符进行转义。