正则表达式

Exisi 2023-01-21 08:01:24
Categories: Tags:

函数

说明

返回值

NOT REGEXP

正则表达式的否定

可选的 match_type 参数是一个字符串,其中可能包含指定如何执行匹配的以下任何或所有字符:

参数

描述

c

区分大小写的匹配。

I

不区分大小写的匹配。

m

多行模式。识别字符串中的行终止符。默认行为是仅在字符串表达式的开头和结尾匹配行终止符。

n

字符匹配行终止符。默认为 .匹配到在一行的末尾停止。

u

Unix 的行尾。只有换行符被 .^ $ 匹配运算符识别为以行结尾的行。

如果字符串 expr 与模式 pat 指定的正则表达式不匹配,则返回 1,否则返回 0

如果 expr pat NULL,则返回值为 NULL

REGEXP

字符串是否与正则表达式匹配

可选的 match_type 参数是一个字符串,其中可能包含指定如何执行匹配的以下任何或所有字符:

参数

描述

c

区分大小写的匹配。

I

不区分大小写的匹配。

m

多行模式。识别字符串中的行终止符。默认行为是仅在字符串表达式的开头和结尾匹配行终止符。

n

字符匹配行终止符。默认为 .匹配到在一行的末尾停止。

u

Unix 的行尾。只有换行符被 .^ $ 匹配运算符识别为以行结尾的行。

如果字符串 expr 与模式 pat 指定的正则表达式匹配,则返回 1,否则返回 0

如果 expr pat NULL,则返回值为 NULL

REGEXP_INSTR()

与正则表达式匹配的子字符串的起始索引

参数

描述

pos

在 expr 中用于开始搜索的位置。如果省略,则默认值为 1

occurrence

要搜索的匹配项的出现次数。如果省略,则默认值为 1

return_option

返回哪种类型的职位。如果此值为 0,则REGEXP_INSTR() 返回匹配子字符串的第一个字符的位置。

如果此值为 1,则 REGEXP_INSTR() 返回匹配子字符串后面的位置。如果省略,则默认值为 0

match_type

指定如何执行匹配的字符串。

返回与模式 pat 指定的正则表达式匹配的字符串 expr 的子字符串的起始索引,如果不匹配,则返回 0

如果 expr pat NULL,则返回值为 NULL。字符索引从 1 开始。

REGEXP_LIKE()

字符串是否与正则表达式匹配

可选的 match_type 参数是一个字符串,其中可能包含指定如何执行匹配的以下任何或所有字符:

参数

描述

c

区分大小写的匹配。

I

不区分大小写的匹配。

m

多行模式。识别字符串中的行终止符。默认行为是仅在字符串表达式的开头和结尾匹配行终止符。

n

字符匹配行终止符。默认为 .匹配到在一行的末尾停止。

u

Unix 的行尾。只有换行符被 .^ $ 匹配运算符识别为以行结尾的行。

如果字符串 expr 与模式 pat 指定的正则表达式匹配,则返回 1,否则返回 0

如果 expr pat NULL,则返回值为 NULL

REGEXP_REPLACE()

替换与正则表达式匹配的子字符串

参数

描述

pos

expr 中开始搜索的位置。如果省略,则默认值为 1

occurrence

要替换的匹配项。如果省略,则默认值为 0(表示替换所有匹配项)。

match_type

指定如何执行匹配的字符串。含义如 REGEXP_LIKE() 所述。

用替换字符串 repl 替换字符串 expr 中匹配由模式 pat 指定的正则表达式的匹配项,并返回结果字符串。

如果 exprpat repl NULL,则返回值为 NULL

REGEXP_SUBSTR()

返回匹配正则表达式的子字符串

参数

描述

pos

expr 中开始搜索的位置。如果省略,则默认值为 1

occurrence

要搜索的匹配项。如果省略,则默认值为 1

match_type

指定如何执行匹配的字符串。含义如 REGEXP_LIKE() 所述。

返回与模式 pat 指定的正则表达式匹配的字符串 expr 的子字符串,如果没有匹配则返回 NULL。如果 expr pat NULL,则返回值为 NULL

RLIKE

字符串是否与正则表达式匹配

可选的 match_type 参数是一个字符串,其中可能包含指定如何执行匹配的以下任何或所有字符:

参数

描述

c

区分大小写的匹配。

I

不区分大小写的匹配。

m

多行模式。识别字符串中的行终止符。默认行为是仅在字符串表达式的开头和结尾匹配行终止符。

n

字符匹配行终止符。默认为 .匹配到在一行的末尾停止。

u

Unix 的行尾。只有换行符被 .^ $ 匹配运算符识别为以行结尾的行。

果字符串 expr 与模式 pat 指定的正则表达式匹配,则返回 1,否则返回 0

如果 expr pat NULL,则返回值为 NULL

示例

mysql> SELECT 'Michael!' REGEXP '.*';

+--------------------------+

|'Michael!' REGEXP '.*' |

+--------------------------+

|                                  1 |

+--------------------------+

mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';

+---------------------------------------------+

|'new*\n*line' REGEXP 'new\\*.\\*line'  |

+---------------------------------------------+

|                                                            0 |

+---------------------------------------------+

mysql> SELECT 'a' REGEXP '^[a-d]';

+-----------------------+

|'a' REGEXP '^[a-d]' |

+-----------------------+

|                              1 |

+---------------------+

示例

mysql> SELECT REGEXP_INSTR('dog cat dog', 'dog');

+-------------------------------------------+

|REGEXP_INSTR('dog cat dog', 'dog') |

+-------------------------------------------+

|                                                          1 |

+-------------------------------------------+

mysql> SELECT REGEXP_INSTR('dog cat dog', 'dog', 2);

+----------------------------------------------+

|REGEXP_INSTR('dog cat dog', 'dog', 2) |

+----------------------------------------------+

|                                                             9 |

+----------------------------------------------+

mysql> SELECT REGEXP_INSTR('aa aaa aaaa', 'a{2}');

+-------------------------------------------+

|REGEXP_INSTR('aa aaa aaaa', 'a{2}') |

+-------------------------------------------+

|                                                          1 |

+-------------------------------------------+

mysql> SELECT REGEXP_INSTR('aa aaa aaaa', 'a{4}');

+-------------------------------------------+

|REGEXP_INSTR('aa aaa aaaa', 'a{4}') |

+-------------------------------------------+

|                                                         8 |

+-------------------------------------------+

示例

mysql> SELECT REGEXP_LIKE('CamelCase', 'CAMELCASE');

+--------------------------------------------------+

|REGEXP_LIKE('CamelCase', 'CAMELCASE') |

+--------------------------------------------------+

|                                                                   1 |

+--------------------------------------------------+

mysql> SELECT REGEXP_LIKE('CamelCase', 'CAMELCASE' COLLATE utf8mb4_0900_as_cs);

+---------------------------------------------------------------------------------------+

|REGEXP_LIKE('CamelCase', 'CAMELCASE' COLLATE utf8mb4_0900_as_cs) |

+---------------------------------------------------------------------------------------+

|                                                                                                                       0 |

+---------------------------------------------------------------------------------------+

示例

mysql> SELECT REGEXP_LIKE('Michael!', '.*');

+-----------------------------------+

|REGEXP_LIKE('Michael!', '.*') |

+-----------------------------------+

|                                              1 |

+-----------------------------------+

mysql> SELECT REGEXP_LIKE('new*\n*line', 'new\\*.\\*line');

+-----------------------------------------------------+

|REGEXP_LIKE('new*\n*line', 'new\\*.\\*line') |

+-----------------------------------------------------+

|                                                                       0 |

+-----------------------------------------------------+

mysql> SELECT REGEXP_LIKE('a', '^[a-d]');

+--------------------------------+

|REGEXP_LIKE('a', '^[a-d]') |

+--------------------------------+

|                                          1 |

+--------------------------------+

示例

mysql> SELECT REGEXP_LIKE('abc', 'ABC');

+--------------------------------+

|REGEXP_LIKE('abc', 'ABC') |

+--------------------------------+

|                                          1 |

+--------------------------------+

mysql> SELECT REGEXP_LIKE('abc', 'ABC', 'c');

+-------------------------------------+

|REGEXP_LIKE('abc', 'ABC', 'c') |

+-------------------------------------+

|                                                 0 |

+-------------------------------------+

示例

mysql> SELECT REGEXP_REPLACE('a b c', 'b', 'X');

+----------------------------------------+

|REGEXP_REPLACE('a b c', 'b', 'X') |

+----------------------------------------+

|a X c                                                |

+----------------------------------------+

mysql> SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X', 1, 3);

+----------------------------------------------------------+

|REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X', 1, 3) |

+----------------------------------------------------------+

|abc def X                                                                  |

+----------------------------------------------------------+

 

 

来自 <https://dev.mysql.com/doc/refman/8.0/en/regexp.html>