1.正则表达式的介绍:
简单的过滤用WHERE就可以实现啦,但是对于复杂的过滤,一般采用正则表达式。
正则表达式是用来匹配文本的特殊的串(字符集合)。
所有种类的程序设计语言、文本编辑器、操作系统等都支持正则表达式。
2,MySQL正则表达式:(正则表达式不区分大小写)
MySQL进支持正则表达式实现的一个很小的子集。
2.1基本字符匹配(REGEXP)
LIKE(通配符)和REGEXP(正则表达式)的区别:
LIKE匹配整个列。如果被匹配的文本在列值中出现,LIKE将找不到,相应的行也不会被返回。而REGEXp在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP就能找到它,相应的行将被返回。
example:
2.2 进行OR匹配(|)
2.3 匹配几个字符之一 [] 是另一种形式的OR语句。
指定一组用中括号[]括起来的字符来完成。[123]表示匹配1 或者2 或者3
2.4匹配范围
集合可以用来定义要匹配的一个或多个字符。
example: [0123456789] == [0-9] (等价)
2.5匹配特殊字符
为了匹配特殊字符,必须使用\\ 为前导。 \\也可以用来引用元字符。 \\- 表示查找-, \\ .表示查找.
\\ f 换页
\\n 换行
\\r 回车
\\t 指标
\\v 纵向制表。
2.6匹配字符类
字符类:(前后都有冒号)
[: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:] 相同,但不包括空格
[:print :] 任意可打印字符
[:punct:] 既不在[:alnum:] 又不在[:cntrl:] 中的任意字符
[:lower:] 任意小写字母(同[a-z])
[:upper:] 任意大写字母(同[A-Z])
[:xdigit:] 任意十六进制数字(同[a-f A-F 0-9])
[:space:] 包括空格在内的任意空白字符
2.7匹配多个实例:(重复元字符)
等价关系:
==
2.8定位符