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]) |
帮助中心