首页 > 代码库 > MySQL中的正则表达式

MySQL中的正则表达式

正则表达式是用正则表达式语言来建立

基本字符的匹配

技术分享

.是正则表达式语言中的一个特殊的字符,它表示匹配任意一个字符

在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个

在使用正则表达式时,编写某个特殊的表达式几乎总是不止一种方法

定位符

元字符    说明

^      文本的开始

$      文本的结尾

[[:<:]]    词的开始

[[:>:]]    词的结尾

注意^有两种用途,在集合中(用[和]定义),用它来否定该集合,否则,用来匹配串的开始处

技术分享

匹配以数字或点开头的

简单的正则表达式测试

技术分享

 

MySQL中的正则表达式