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

注解

  • 只有当正则表达式可以被分解成 StartsWithEndsWithContainsStringEquals 等效系统函数时,此函数才会受益于范围索引
  • 如果要搜索的字符串表达式(string_expr_1)、正则表达式(string_expr_2)或所选修饰符(string_expr_3)无效,则返回 undefined
  • 此函数支持以下四个修饰符:| |格式|说明| | --- | --- | --- | | 多行 | m |将要搜索的字符串表达式视为多行。 如果没有此选项,字符 ^$ 将在字符串的开头或结尾匹配,而不是在每一行匹配。 | | 匹配任何字符串 | s |允许使用“.”来匹配任何字符,包括换行符。 | | 忽略大小写 | i |模式匹配时忽略大小写。 | | 忽略空格 | x |忽略所有空格字符。 |
  • 如果希望在正则表达式中使用元字符,并且不希望它具有特殊的含义,则应使用 \ 对该元字符进行转义。