REGEXP_INSTR()

函数说明

REGEXP_INSTR() 返回匹配到的正则表达式模式在字符串中的起始位置。如果没有找到匹配项,该函数将返回 0。

语法

1. > REGEXP_INSTR(expr, pat[, pos[, occurrence[, return_option[, match_type]]]])

参数释义

  • expr 是要匹配的字符串。
  • pat 是要在字符串中匹配的正则表达式。
  • pos:这是一个可选参数,指定从哪个位置开始搜索。默认值是 1,表示从字符串的开始位置开始搜索。
  • occurrence:这是一个可选参数,指定返回第几次匹配的位置。默认值是 1,表示返回第一次匹配的位置。
  • return_option:这是一个可选参数,指定返回的位置是模式开始的位置还是结束的位置。如果为 0 或省略,函数返回模式开始的位置。如果为 1,函数返回模式结束的位置之后的位置。
  • match_type 参数是一个可选的字符串,用于指定匹配的方式。这个参数可以由以下字符构成,每个字符指定一种匹配方式,字符的顺序不影响结果:

  • 'c':区分大小写进行匹配(即,大写和小写字母被视为不同的字符)。默认情况下,匹配区分大小写。

  • 'i':不区分大小写进行匹配(即,大写和小写字母被视为相同的字符)。
  • 'n':允许 . 符号匹配换行符。默认情况下,. 符号不会匹配换行符。
  • 'm':将字符串视为多行。即,^ 匹配字符串的开头或任何行的开头,$ 匹配字符串的结尾或任何行的结尾。默认情况下,^ 只匹配字符串的开头,$ 只匹配字符串的结尾。
  • 'u':将模式视为 UTF-8 字符串。默认情况下,模式视为字节字符串。

示例

1. mysql> SELECT REGEXP_INSTR('Hello, my number is 12345.', '[0-9]+');
2. +--------------------------------------------------+
3. | regexp_instr(Hello, my number is 12345., [0-9]+) |
4. +--------------------------------------------------+
5. |                                               21 |
6. +--------------------------------------------------+
7. 1 row in set (0.00 sec)

9. mysql> SELECT REGEXP_INSTR('apple', 'z+');
10. +-------------------------+
11. | regexp_instr(apple, z+) |
12. +-------------------------+
13. |                       0 |
14. +-------------------------+
15. 1 row in set (0.00 sec)

17. mysql> SELECT REGEXP_INSTR('Hello, World!', 'World');
18. +------------------------------------+
19. | regexp_instr(Hello, World!, World) |
20. +------------------------------------+
21. |                                  8 |
22. +------------------------------------+
23. 1 row in set (0.00 sec)

25. mysql> SELECT REGEXP_INSTR('Hello, World! World!', 'World', 1, 2);
26. +-------------------------------------------------+
27. | regexp_instr(Hello, World! World!, World, 1, 2) |
28. +-------------------------------------------------+
29. |                                              15 |
30. +-------------------------------------------------+
31. 1 row in set (0.00 sec)