正则表达式是用正则表达式语言来建立
基本字符的匹配
.是正则表达式语言中的一个特殊的字符,它表示匹配任意一个字符
在LIKE和REGEXP之间有一个重要的差别,LIKE匹配整个列,如果被匹配的文本仅在列值中出现,LIKE将不会找到它,相应的行也不会被返回(除非使用通配符)
而REGEXP在列值内匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行也会被返回。
MySQL中的正则表达式匹配默认不区分大小写,为区分大小写,可使用BINARY关键字,在REGEXP后面加上BINARY即可
进行OR匹配
|为正则表达式的OR操作符,它表示匹配其中之一
匹配几个字符之一
[]是另一种形式的OR语句。事实上,正则表达式[123] Ton是[1|2|3] Ton的缩写,两者是等同的,但是需要用[]来定义OR语句查找什么,例如下面的例子
并非我们期望的输出,这是因为MySQL假定你的意思是‘1‘或‘2‘或‘3 ton‘,除非把字符|括在一个集合中,负责它将应用于整个串。
匹配范围
[1-5]定义了一个范围,这个表达式的范围是匹配1到5,也可以写成[12345],这两者是等价的,不过前者更整洁
匹配特殊字符
\\.匹配. 转义字符,为了匹配反斜杠(\)字符本身,需要使用\\\
多数正则表达式实现使用单个反斜杠转义特殊字符,以便能使用这些字符本身,但MySQL要求两个反斜杠,MySQL自己解释一个,正则表达式解释另一个
匹配多个实例
元字符 说明
* 0个或多个匹配
+ 1个或多个匹配,等于{1,}
? 0个或1个匹配,等于{0,1}
{n} 指定数目的匹配
{n,} 大于等于指定数目的匹配
{n,m} 匹配数目的范围,m不超过255
对这个正则表达式解释一下,转义符匹配括号,[0-9]匹配数字,s后的?使s可选,0个或1个
在使用正则表达式时,编写某个特殊的表达式几乎总是不止一种方法
定位符
元字符 说明
^ 文本的开始
$ 文本的结尾
[[:<:]] 词的开始
[[:>:]] 词的结尾
注意^有两种用途,在集合中(用[和]定义),用它来否定该集合,否则,用来匹配串的开始处
匹配以数字或点开头的
简单的正则表达式测试