赞
踩
MySQL仅支持多数正则表达式实现的一个很小的子集。这里列举MySQL支持的大多数内容!!!
#相当于like "%14%"
SELECT * FROM sys_dept WHERE ancestors REGEXP "14";
匹配不区分大小写,如果要区分大小写,可使用BINARY字段,即WHERE ancestors REGEXP BINARY “14”;
SELECT * FROM sys_dept WHERE ancestors REGEXP "14|15|1";
SELECT * FROM sys_dept WHERE ancestors REGEXP "[145]";
这里,[145]定义一组字符,它的意思是匹配1或4或5。
正如所见,[]是另一种形式的OR语句。事实上,正则表达式[145]为[1|4|5]Ton的缩写,也可以使用后者。但是,需要用[ ]来定义OR语句查找什么。
字符集合也可以被否定,即,它们将匹配除指定字符外的任何东西。为否定一个字符集,在集合的开始处放置一个^即可。因此,尽管[123]匹配字符1、2或3,但
[^123]
却匹配除这些字符外的任何东西。
集合可用来定义要匹配的一个或多个字符。例如,匹配数字0到9:[0-9]
SELECT * FROM products WHERE pro_dname REGEXP '[1-5]Ton';
为了匹配特殊字符,必须用\为前导。\-表示查找-,.表示查找.。
即所谓的转义。
\也用来引用元字符,如下表
元字符 | 说明 |
---|---|
\\f | 换页 |
\\n | 换行 |
\\r | 回车 |
\\t | 指标 |
\\v | 纵向制表 |
常用的预定义字符集。
类 | 说明 |
---|---|
[:alnum:] | 任意字母和数字(同[a-z|A-Z|0-9]) |
[:alpha:] | 任意字符(同[a-z|A-Z]) |
[:blank:] | 空格和制表(同[\\t]) |
[:cntrl:] | ASCII控制字符(ASCII 0到31和127) |
[:digit:] | 任意数字(同[0-9]) |
[:graph:] | 与[:print:]相同,但不包括空格 |
[:lower:] | 任意小写字母(同[a-z]) |
[:print:] | 任意可打印字符 |
[:punct:] | 既不在[:almm:]又不在[:cntrl:]中的任意字符 |
[:space:] | 包括空格在内的任意空白字符(同\\f\\n\\r\\t\\v]) |
[:upper:] | 任意大写字母(同[A-Z]) |
[:xdigit:] | 任.意十六进制数字(同[a-fA-F0-9]) |
可以使用正则表达式重复元字符来完成
元字符 | 说明 |
---|---|
* | 0个或多个匹配 |
+ | 1个或多个匹配(等于{1,}) |
? | 0个或1个匹配 (等于{0,}) |
{n} | 指定数目的匹配 |
{n,} | 不少于指定数目的匹配 |
{n,m} | 匹配数目的范围(m不超过255) |
例如:
REGEEXP '[[:digit:]]{4}'
前面都是匹配一个串中任意位置的文本,使用下面定位符可以匹配特定位置的文本
元字符 | 说明 |
---|---|
^ | 文本的开始 |
$ | 文本的结尾 |
[[: | 词的开始 |
[[:>:]] | 词的结尾 |
例如:匹配一个以数字或者小数点开始的数
REGEXP '^[0-9\\.]'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。