MySQL REGEXP_INSTR() 函数使用指南
MySQL REGEXP_INSTR()
函数从一个字符串中搜索和指定模式匹配的子串并返回的子串的索引。
默认情况下, REGEXP_INSTR()
函数执行不区分大小写的匹配。
REGEXP_INSTR()
语法
这里是 MySQL REGEXP_INSTR()
的语法:
REGEXP_INSTR(str, regexp)
REGEXP_INSTR(str, regexp, position)
REGEXP_INSTR(str, regexp, position, occurrence)
REGEXP_INSTR(str, regexp, position, occurrence, return_option)
REGEXP_INSTR(str, regexp, position, occurrence, return_option, mode)
参数
str
- 必需的。一个字符串。
regexp
- 必需的。正则表达式。
position
- 可选的。开始搜索的起始位置。默认为
1
。 occurrence
- 可选的。第几次匹配的内容。默认为
1
。 return_option
- 可选的。指定返回哪一种位置索引。如果为
0
,返回匹配的子串的第一个字符的位置索引;如果为1
,返回匹配的子串的后面的位置索引。默认为0
. mode
- 可选的。执行匹配采用的模式。
匹配模式可以使用下面值中的一个或多个:
c
: 区分大小写i
: 不区分大小写m
: 多行匹配模式n
: 点.
可以匹配行结束u
: 仅限 unix 行结尾
如果匹配模式存在矛盾的选项,则以最右边的为准。
返回值
REGEXP_INSTR()
函数从一个字符串 str
中搜索和指定模式 regexp
匹配的子串并返回的子串的索引。如果没有匹配到,则返回 NULL
。
如果 str
或者 regexp
为 NULL
,REGEXP_INSTR()
将返回 NULL
。
REGEXP_INSTR()
示例
以下语句用来找出字符串 '123 abc 456 def'
中的第一组连续的数字的索引。
SELECT REGEXP_INSTR('123 abc 456 def', '\\d+');
+-----------------------------------------+
| REGEXP_INSTR('123 abc 456 def', '\\d+') |
+-----------------------------------------+
| 1 |
+-----------------------------------------+
如果想找出字符串 '123 abc 456 def'
中的第二组连续的数字,请使用下面的语句:
SELECT REGEXP_INSTR('123 abc 456 def', '\\d+', 1, 2);
+-----------------------------------------------+
| REGEXP_INSTR('123 abc 456 def', '\\d+', 1, 2) |
+-----------------------------------------------+
| 9 |
+-----------------------------------------------+
如果想找出字符串 '123 abc 456 def'
中的第一组连续的数字的后面的索引,请使用下面的语句:
SELECT REGEXP_INSTR('123 abc 456 def', '\\d+', 1, 1, 1);
+--------------------------------------------------+
| REGEXP_INSTR('123 abc 456 def', '\\d+', 1, 1, 1) |
+--------------------------------------------------+
| 4 |
+--------------------------------------------------+