目录
1、示例:
-- 正则^[0-9\\.]的说明: ^匹配串的开始,因此,^[0-9\\.]只在.或任意数字为串中第
-- 一个字符时才匹配它们
select '.5 ton' REGEXP '^[0-9\\.]' -- 匹配结果返回1,不匹配结果返回0
2、特殊字符说明:
特殊字符 | 说明 |
.(英文句号) | 匹配任意一个字符 |
| | 匹配其中之一,等同于or;‘1|2|3’:匹配1或2或3 |
[] | 匹配几个字符之一,‘[135]’ 等同于 ‘1|3|5’ |
- | 表示范围,“[0-9]”匹配任意一个数字,等同[0123456789], “[a-zA-Z]”匹配任意一个字母字符 |
\\ | 转义字符,用来转义特殊字符“.,|,[],()”等,及空白元字符 |
3、空白元字符
元字符 | 说明 |
\\f | 换页 |
\\n | 换行 |
\\r | 回车 |
\\t | 制表 |
\\v | 纵向制表 |
4、配字符类
类 | 说明 |
[:alnum:]
|
任意字母和数字(同
[a-zA-Z0-9]
)
|
[:alpha:]
|
任意字符(同
[a-zA-Z]
)
|
[:blank:]
|
空格和制表(同
[\\t]
)
|
[:cntrl:]
|
ASCII
控制字符(
ASCII
0
到
31
和
127
)
|
[:digit:]
|
任意数字(同
[0-9]
)
|
[:graph:]
|
与
[:print:]
相同,但不包括空格
|
[:lower:]
|
任意小写字母(同
[a-z]
)
|
[:print:]
|
任意可打印字符
|
[:punct:]
|
既不在
[:alnum:]
又不在
[:cntrl:]
中的任意字符
|
[:space:]
|
包括空格在内的任意空白字符(同
[\\f\\n\\r\\t\\v]
)
|
[:upper:]
|
任意大写字母(同
[A-Z]
)
|
[:xdigit:]
|
任意十六进制数字(同
[a-fA-F0-9]
)
|
5、重复元字符
元字符 | 说明 |
* |
0
个或多个匹配
|
+ |
1
个或多个匹配(等于
{1,}
)
|
? |
0
个或
1
个匹配(等于
{0,1}
)
|
{n} |
指定数目的匹配
|
{n,} |
不少于指定数目的匹配
|
{n,m} |
匹配数目的范围(
m
不超过
255
)
|
6、定位符
元字符 | 说明 |
^ |
文本的开始
|
$ |
文本的结尾
|
[[:<:]]
|
词的开始
|
[[:>:]]
|
词的结尾
|
7、综合使用及说明
-- 输入
SELECT prod_name
FROM products
WHERE prod_name REGEXP '\\([0-9] sticks?\\)'
ORDER BY prod_name
-- 输出
--------------------
--| prod_name |---
--|TNT (1 stick)|---
--|TNT (5 sticks)|--
--------------------
-- 说明:正则表达式\\([0-9] sticks?\\)中,\\(匹配(,
--[0-9]匹配任意数字(这个例子中为1和5),sticks?匹配stick
--和sticks(s后的?使s可选,因为?匹配它前面的任何字符的0次或1次出
--现),\\)匹配)。
-- 输入
SELECT prod_name
FROM products
WHERE prod_name REGEXP '[[:digit:]]{4}'
ORDER BY prod_name
-- 输出
--------------------
--| prod_name |---
--|JetPack 1000 |---
--|JetPack 5000 |---
--------------------
-- [:digit:]匹配任意数字,因而它为数字的一个集
-- 合。{4}确切地要求它前面的字符(任意数字)出现4次,所以
-- [[:digit:]]{4}匹配连在一起的任意4位数字