MariaDB 正则表达式

MariaDB NOT REGEXP 函数是 REGEXP 函数的否定。

NOT REGEXP 函数是 NOT RLIKE 的同义词

语法

expression NOT REGEXP pattern 

参数

expression必需。 指定字符表达式,例如列或字段。
pattern必需。 指定正则表达式匹配信息。请参阅下表了解模式语法。

正则表达式模式

符号描述
^匹配字符串的开头。
$匹配字符串的结尾字符串。
*匹配零次或多次出现。
+匹配一次或多次出现。
?匹配零次或一次出现。
.匹配除 NULL 之外的任何字符。
|像"OR"一样使用来指定多个替代字符。
[ ]匹配 [] 内指定的任何单个字符。
[^ ]匹配 [] 内未指定的任何单个字符。
-表示字符范围。
( )用于将表达式分组为子表达式。
{m}匹配 m
{m,}匹配至少 m 次。
{m,n}匹配至少 m 次,但不超过 n 次。
\nn 是 1 到 9 之间的数字。匹配找到的第 n 个子表达式在 ( ) 内遇到 \n 之前。
\d匹配数字字符。
\D匹配非数字字符。
\w匹配单词字符。
\W匹配非单词字符。
\s匹配空白字符。
\s匹配空白字符。
\S匹配非空白字符。
*?匹配前面的模式出现零次或多次。
+?匹配前面的模式出现一次或多次。
??匹配前面的模式零次或一次出现。
?匹配前面的模式n 次。
?与前面的模式匹配至少 n 次。
?匹配前面的模式至少 n 次,但不超过 m 次。
[..]匹配一种排序规则可以是多个字符的元素。
[=character_class=]表示一个等价类。它匹配具有相同排序值的所有字符,包括其自身。
[:character_class:]表示匹配属于该字符的所有字符的字符类

标准类列表名称

字符类名称 含义
alnum 字母数字字符
alpha 字母字符
blank 空白字符
cntrl 控制字符
digit 数字字符
graph 图形字符
lower 小写字母字符
print 图形或空格字符
punct 标点符号
space 空格、制表符、换行符和回车符
upper 大写字母字符
xdigit 十六进制数字字符

示例:匹配多个替代项

考虑一个名为Employee的表。以下查询用于从此表中获取 Name 不包含"Ja"、"Je"或"Ji"的所有记录。要为模式的第二个字符指定多个替代字符,请使用 |

SELECT * FROM Employee
WHERE Name NOT REGEXP 'J(a|e|i)'; 

示例:匹配开始

考虑一个名为Employee 的表。以下查询用于从此表中获取 Name 不以"J"开头的所有记录。这里,^ 用于指定模式的起始字符。

SELECT * FROM Employee
WHERE Name NOT REGEXP '^J'; 

示例:结尾匹配

考虑一个名为Employee的表。以下查询用于从此表中获取 Name 不以"n"结尾的所有记录。这里,$用于指定模式的结束字符。

SELECT * FROM Employee
WHERE Name NOT REGEXP 'n$'; 

示例:非匹配列表

考虑一个名为Employee 的表。以下查询用于从此表中获取 Name 不包含"Ja"、"Jb"、"Jc"或"Jd"的所有记录。要指定模式的第二个字符,请使用 [  ]

SELECT * FROM Employee
WHERE Name NOT REGEXP 'J[a-d]'; 

示例:不匹配字符类

考虑一个名为 Employee 的表。以下查询用于从此表中获取 Address 不包含任何标点符号的所有记录。

SELECT * FROM Employee
WHERE Address NOT REGEXP '[[:punct:]]'; 

示例:转义字符

要转义特殊字符,应在其前面加上两个反斜杠 \\。例如:以下查询可用于从 Employee 表中获取 Address 不包含 ( 字符的所有记录。

SELECT * FROM Employee
WHERE Address NOT REGEXP '\\(';