REGEXP_INSTR用于为POSIX式的正则表达式搜索字符串。这个函数返回的是字符串中的匹配内容的位置信息。
语法
INTEGER REGEXP_INSTR
(
srcstr TEXT,
pattern TEXT,
position INT DEFAULT 1,
occurrence INT DEFAULT 1,
returnparam INT DEFAULT 0,
modifier TEXT DEFAULT NULL,
subexpression INT DEFAULT 0,
)
参数
参数名称 | 描述 |
---|---|
srcstr | srcstr指定要搜索的字符串。 |
pattern | pattern指定REGEXP_INSTR 函数要搜索的正则表达式。 |
position | position指定表明在源字符串中起始位置的整数值。缺省值为1。 |
occurrence | 如果在搜索字符串时, 有一个以上的模式出现,那么occurrence则用于指定返回的匹配信息。缺省值为1. |
returnparam | returnparam是一个整数值,用于指定REGEXP_INSTR应该返回的字符串中的位置。缺省值为0。可以指定下列内容:
|
modifier | modifier用于指定控制模式匹配行为的值。缺省值为NULL。关于PolarDB所支持的修改器的完整列表,请参见PostgreSQL核心文件。 |
subexpression | subexpression是一个整数值,用于识别由REGEXP_INSTR返回的pattern部分。subexpression的缺省值为0。
如果我们给subexpression指定一个值,那么在pattern中必须包括一组(或多组)的括号,来孤立正在搜索的值的部分。由subexpression指定的值表明了应被返回的括号组。例如,如果subexpression为2,那么REGEXP_INSTR将返回第二组括号的位置。 |
示例
在下列简单的示例中,REGEXP_INSTR用于搜索包含电话号码的字符串。 这个字符串为第一次出现的包含3个连续数字的模式:
postgres=# SELECT REGEXP_INSTR('800-555-1212', '[0-9][0-9][0-9]', 1, 1) FROM DUAL;
regexp_instr
--------------
1
(1 row)
示例中命令了REGEXP_INSTR返回第一次出现的位置。如果我们要修改命令使其返回三个连续数字的第二次出现的起始位置,方法如下:
postgres=# SELECT REGEXP_INSTR('800-555-1212', '[0-9][0-9][0-9]', 1, 2) FROM DUAL;
regexp_instr
--------------
5
(1 row)