当前位置: 首页 > article >正文

MySQL 【正则表达式】函数大全

目录

1、 NOT REGEXP 操作符检查一个字符串和一个正则表达式是否不匹配。

2、NOT RLIKE 操作符检查一个字符串是否和一个正则表达式不匹配。

3、REGEXP 操作符检查一个字符串和一个正则表达式是否匹配。

4、REGEXP_INSTR() 函数从一个字符串中搜索和指定模式匹配的子串并返回的子串的索引。

5、REGEXP_LIKE() 函数检查一个字符串是否和一个正则表达式是否匹配

6、REGEXP_REPLACE() 函数在一个字符串中使用新内容替换一个和指定的正则表达式匹配的内容。

7、REGEXP_SUBSTR() 函数从一个字符串获取和指定模式匹配的子串并返回。

8、 RLIKE 操作符检查一个字符串和一个正则表达式是否匹配。


1、 NOT REGEXP 操作符检查一个字符串和一个正则表达式是否不匹配

str NOT REGEXP regexp

或者

 NOT (str REGEXP regexp)

如果字符串 str 和正则表达式 regexp 不匹配, NOT REGEXP 返回 1,否则 NOT REGEXP 返回 0

如果任意一个参数为 NULLNOT REGEXP 返回 NULL

SELECT
    'hello' NOT REGEXP '^[a-z]+$',
    'hello' NOT REGEXP '^[A-Z]+$',
    '12345' NOT REGEXP '[0-9]+$',
    '12345' NOT REGEXP '^\\d+$',
    '123ab' NOT REGEXP '^\\d*$',
    '123ab' NOT REGEXP '^.*$'

2、NOT RLIKE 操作符检查一个字符串是否和一个正则表达式不匹配

str NOT RLIKE regexp

或者

 NOT (str RLIKE regexp)

如果字符串 str 和正则表达式 regexp 不匹配, NOT RLIKE 返回 1,否则 NOT RLIKE 返回 0

如果任意一个参数为 NULLNOT RLIKE 返回 NULL

SELECT
    'hello' NOT RLIKE '^[a-z]+$',
    'hello' NOT RLIKE '^[A-Z]+$',
    '12345' NOT RLIKE '[0-9]+$',
    '12345' NOT RLIKE '^\\d+$',
    '123ab' NOT RLIKE '^\\d*$',
    '123ab' NOT RLIKE '^.*$'

3、REGEXP 操作符检查一个字符串和一个正则表达式是否匹配

REGEXP 操作符等同于 RLIKERLIKERLIKE 操作符和 REGEXP_LIKE()REGEXP_LIKE()REGEXP_LIKE() 函数。

 如果字符串 str 和正则表达式 regexp 匹配, REGEXP 返回 1,否则 REGEXP 返回 0

如果任意一个参数为 NULLREGEXP 返回 NULL

SELECT
    'hello' REGEXP '^[a-z]+$',
    'hello' REGEXP '^[A-Z]+$',
    '12345' REGEXP '[0-9]+$',
    '12345' REGEXP '^\\d+$',
    '123ab' REGEXP '^\\d*$',
    '123ab' REGEXP '^.*$'

4、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 行结尾

找出字符串 '123 abc 456 def' 中的第一组连续的数字的索引

SELECT REGEXP_INSTR('123 abc 456 def', '\\d+');

找出字符串 '123 abc 456 def' 中的第二组连续的数字

SELECT REGEXP_INSTR('123 abc 456 def', '\\d+', 1, 2);

找出字符串 '123 abc 456 def' 中的第一组连续的数字的后面的索引

SELECT REGEXP_INSTR('123 abc 456 def', '\\d+', 1, 1, 1);

5、REGEXP_LIKE() 函数检查一个字符串是否和一个正则表达式是否匹配

REGEXP_LIKE(str, regexp)
REGEXP_LIKE(str, regexp, mode)

str:必需的。一个字符串。

regexp:必需的。正则表达式。

mode:可选的。执行匹配采用的模式。

匹配模式

  • c: 区分大小写
  • i: 不区分大小写
  • m: 多行匹配模式
  • n: 点 . 可以匹配行结束
  • u: 仅限 unix 行结尾

如果字符串 str 和正则表达式 regexp 匹配, REGEXP_LIKE() 返回 1,否则 REGEXP_LIKE() 返回 0

如果 str 或者 regexp 为 NULLREGEXP_LIKE() 将返回 NULL

SELECT
    REGEXP_LIKE('hello', '^[a-z]+$'),
    REGEXP_LIKE('hello', '^[A-Z]+$'),
    REGEXP_LIKE('12345', '[0-9]+$'),
    REGEXP_LIKE('12345', '^\\d+$'),
    REGEXP_LIKE('123ab', '^\\d*$'),
    REGEXP_LIKE('123ab', '^.*$')

6、REGEXP_REPLACE() 函数在一个字符串中使用新内容替换一个和指定的正则表达式匹配的内容。

REGEXP_REPLACE(str, regexp, replacement)
REGEXP_REPLACE(str, regexp, replacement, position)
REGEXP_REPLACE(str, regexp, replacement, position, occurrence)
REGEXP_REPLACE(str, regexp, replacement, position, occurrence, mode)

str:必需的。一个字符串。

regexp:必需的。正则表达式。

replacement:必需的。用来替换的字符串。

position:可选的。开始搜索的起始位置。默认为从头开始。

occurrence:可选的。替换第几次匹配的内容。默认为替换所有匹配的内容。

mode:可选的。执行匹配采用的模式。

匹配模式

  • c: 区分大小写
  • i: 不区分大小写
  • m: 多行匹配模式
  • n: 点 . 可以匹配行结束
  • u: 仅限 unix 行结尾
SELECT REGEXP_REPLACE('123 abc 456 def', '\\s+', '-');

使用 X 只替换了第二次匹配的连续数字

SELECT REGEXP_REPLACE('123 abc 456 def', '\\d+', 'X', 1, 2);

7、REGEXP_SUBSTR() 函数从一个字符串获取和指定模式匹配的子串并返回。

REGEXP_SUBSTR(str, regexp)
REGEXP_SUBSTR(str, regexp, position)
REGEXP_SUBSTR(str, regexp, position, occurrence)
REGEXP_SUBSTR(str, regexp, position, occurrence, mode)

str:必需的。一个字符串。

regexp:必需的。正则表达式。

position:可选的。开始搜索的起始位置。默认为 1

occurrence:可选的。第几次匹配的内容。默认为 1

mode:可选的。执行匹配采用的模式。

匹配模式

  • c: 区分大小写
  • i: 不区分大小写
  • m: 多行匹配模式
  • n: 点 . 可以匹配行结束
  • u: 仅限 unix 行结尾
SELECT REGEXP_SUBSTR('123 abc 456 def', '\\d+');

找出字符串 '123 abc 456 def' 中的第二组连续的数字

SELECT REGEXP_SUBSTR('123 abc 456 def', '\\d+', 1, 2);

8、 RLIKE 操作符检查一个字符串和一个正则表达式是否匹配

RLIKE 操作符等同于 REGEXP
 操作符和 RLIKE_LIKE() 函数。

如果字符串 str 和正则表达式 regexp 匹配, RLIKE 返回 1,否则 RLIKE 返回 0

如果任意一个参数为 NULLRLIKE 返回 NULL

SELECT
    'hello' RLIKE '^[a-z]+$',
    'hello' RLIKE '^[A-Z]+$',
    '12345' RLIKE '[0-9]+$',
    '12345' RLIKE '^\\d+$',
    '123ab' RLIKE '^\\d*$',
    '123ab' RLIKE '^.*$'

 

 


http://www.kler.cn/news/368380.html

相关文章:

  • Pandabuy事件警示:反向海淘品牌如何规避风险
  • 【密码学】全同态加密张量运算库解读 —— TenSEAL
  • 前端代码分享--爱心
  • 基于SSM轻型卡车零部件销售系统的设计
  • 点云处理中的多项式重构、平滑与法线估计
  • 2024高等代数【南昌大学】
  • 如何用Jmeter做性能测试
  • 构建ECMAScript标准
  • 论文略读Fewer Truncations Improve Language Modeling
  • 玩转springboot之springboot属性绑定原理
  • ESP32-S3-DevKitC-1开发记录帖(2)——与MPU6050一起部署动作识别神经网络
  • 单链表总结
  • Zig 语言通用代码生成器:逻辑,冒烟测试版发布二
  • 学习qmake
  • 配置smaba (Linux与windows通信)
  • GPT打数模——电商品类货量预测及品类分仓规划
  • LeetCode9:回文数
  • golang将指针传给cgo后还能被回收吗?
  • 15-4连续子串和的整除问题
  • Android Studio历史版本下载
  • 开源模型应用落地-Qwen2-VL-7B-Instruct-vLLM-OpenAI API Client调用
  • jsp网上招标系统+lw视频讲解
  • 【论文阅读】Reliable, Adaptable, and Attributable Language Models with Retrieval
  • 基于stm32的HAL库的adc采集实验
  • 第18次CCF CSP认证真题解
  • 算法题总结(十九)——图论