Appearance
正则表达式
正则表达式相关函数及操作符
REGEXP
语法:expr REGEXP pattern
REGEXP 是正则表达式匹配操作符,用于匹配字符串的模式。它是一个二元操作符,左操作数是要匹配的字符串,右操作数是正则表达式模式。如果匹配成功,返回 1,否则返回 0。如果任意一个操作数为 NULL,则返回 NULL。
匹配时忽略大小写
示例:
sql
SELECT 'Monty!' REGEXP '.*' AS result;
+--------+
| result |
+--------+
| 1 |
+--------+
SELECT '1' REGEXP '^[[:digit:]]+$' AS result;
+--------+
| result |
+--------+
| 1 |
+--------+
SELECT 'a' REGEXP '^[[:digit:]]+$' AS result;
+--------+
| result |
+--------+
| 0 |
+--------+
SELECT 'ABC' REGEXP 'a.*' AS result; -- 忽略大小写
+--------+
| result |
+--------+
| 1 |
+--------+
NOT REGEXP
语法:expr NOT REGEXP pattern
NOT REGEXP
是 REGEXP
的否定形式。
正则表达式语法
单个字符
字符 | 说明 |
---|---|
. | 任意字符 |
[xyz] | 字符集,匹配所包含的任意一个字符 |
[^xyz] | 负值字符集,匹配未包含的任意字符 |
\d | 数字:[0-9] |
\D | 非数字:[^0-9] |
[[:alpha:]] | 字母:[A-Za-z] |
[[:^alpha:]] | 非字母:[^A-Za-z] |
\pN | Unicode 字符集(单个字符) |
\p{Greek} | Unicode 字符集(单个字符) |
\PN | 非 Unicode 字符集(单个字符) |
\P{Greek} | 非 Unicode 字符集(单个字符) |
组合
字符 | 说明 |
---|---|
xy | 匹配x 后跟y |
x|y | 匹配x 或y |
重复
字符 | 说明 |
---|---|
x* | 匹配 0 个或多个x ,优先匹配更多的x |
x+ | 匹配 1 个或多个x ,优先匹配更多的x |
x? | 匹配 0 个或 1 个x ,优先匹配 1 个x |
x{n,m} | 匹配 n 个或 n+1 个或...或 m 个x ,优先匹配更多的x |
x{n,} | 匹配 n 个或 n+1 个或...个x ,优先匹配更多的x |
x{n} | 匹配 n 个x |
x*? | 匹配 0 个或多个x ,优先匹配更少的x |
x+? | 匹配 1 个或多个x ,优先匹配更少的x |
x?? | 匹配 0 个或 1 个x ,优先匹配 0 个x |
x{n,m}? | 匹配 n 个或 n+1 个或...或 m 个x ,优先匹配更少的x |
x{n,}? | 匹配 n 个或 n+1 个或...个x ,优先匹配更少的x |
x{n}? | 匹配 n 个x ,优先匹配 n 个x |
空字符串
字符 | 说明 |
---|---|
^ | 匹配文本或行首(标志m=true ) |
$ | 匹配文本或行尾(类似\z 而不是\Z )或行尾(标志m=true ) |
\A | 匹配文本首 |
\b | 匹配 ASCII 单词边界(\w 一侧为\W 、\A 或\z ) |
\B | 匹配非 ASCII 单词边界 |
\z | 匹配文本尾 |
转义序列
字符 | 说明 |
---|---|
\a | 响铃(\007 ) |
\f | 换页(\014 ) |
\t | 水平制表符(\011 ) |
\n | 换行(\012 ) |
\r | 回车(\015 ) |
\v | 垂直制表符(\013 ) |
\* | 字面量* ,对于任何标点符号* |
\123 | 八进制字符代码(最多三位) |
\x7F | 十六进制字符代码(两位) |
\x{10FFFF} | 十六进制字符代码 |
\Q...\E | 字面量文本...即使...包含标点符号 |
字符类元素
字符 | 说明 |
---|---|
x | 单个字符 |
A-Z | 字符范围(包含) |
\d | Perl 字符类 |
[:foo:] | ASCII 字符类 foo |
\p{Foo} | Unicode 字符类 Foo |
\pF | Unicode 字符类 F(单字母名称) |
命名字符类作为字符类元素
字符 | 说明 |
---|---|
[\d] | 数字(\d ) |
[^\d] | 非数字(\D ) |
[\D] | 非数字(\D ) |
[^\D] | 非非数字(\d ) |
[[:name:]] | 字符类内的命名 ASCII 类([:name:] ) |
[^[:name:]] | 非字符类内的命名 ASCII 类([:^name:] ) |
[\p{Name}] | 字符类内的命名 Unicode 属性(\p{Name} ) |
[^p{Name}] | 非字符类内的命名 Unicode 属性(\P{Name} ) |
Perl 字符类(仅限 ASCII)
字符 | 说明 |
---|---|
\d | 数字([0-9] ) |
\D | 非数字([^0-9] ) |
\s | 空白([\t\n\f\r ] ) |
\S | 非空白([^\t\n\f\r ] ) |
\w | 单词字符([0-9A-Za-z_] ) |
\W | 非单词字符([^0-9A-Za-z_] ) |
ASCII 字符类
字符 | 说明 |
---|---|
[[:alnum:]] | 字母数字([0-9A-Za-z] ) |
[[:alpha:]] | 字母([A-Za-z] ) |
[[:ascii:]] | ASCII([\x00-\x7F] ) |
[[:blank:]] | 空白([\t ] ) |
[[:cntrl:]] | 控制字符([\x00-\x1F\x7F] ) |
[[:digit:]] | 数字([0-9] ) |
[[:graph:]] | 图形字符([!-~] ) |
[[:lower:]] | 小写字母([a-z] ) |
[[:print:]] | 可打印字符([ -~] ) |
[[:punct:]] | 标点符号([!-/:-@[- {-~]`) |
[[:space:]] | 空白([\t\n\v\f\r ] ) |
[[:upper:]] | 大写字母([A-Z] ) |
[[:word:]] | 单词字符([0-9A-Za-z_] ) |
[[:xdigit:]] | 十六进制数字([0-9A-Fa-f] ) |