用正则表达式进行搜索——regexp

目录

正则表达式介绍

使用MYSQL正则表达式

基本字符匹配

进行OR匹配

匹配几个字符之一

匹配范围

匹配特殊字符

匹配字符类

匹配多个实例

定位符

 


正则表达式介绍

正则表达式是用来匹配文本的特殊的串(字符集合)。

正则表达式用正则表达式语言来建立。正则表达式语言作为一种特殊语言,与任意语言一样,正则表达式具有你必须学习的特殊的语法和指令。

使用MYSQL正则表达式

正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。

MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定正则表达式,过滤SELECT检索出的数据。

基本字符匹配

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

LIKE和REGEXP之间有一个重要的差别:LIKE匹配整个串而REGEXP匹配子串。LIKE匹配整个列。如果被匹配的文本在列值中出现,LIKE将不会找到它,相应的行也不被返回(除非使用通配符)。而REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。

            

REGEXP也能用来匹配整个列值(从而起到与LIKE相同作用),利用定位符,通过用^开始每个表达式,用$结束每个表达式,即可。

MySQL中的正则表达式匹配(自版本3.23.4后)不区分大小写(即,大写和小写都匹配)。为区分大小写,可使用BINARY关键字,如WHERE prod_name REGEXP BINARY 'JetPack .000'。

 

进行OR匹配

|为正则表达式的OR操作符。它表示匹配其中之一。使用|从功能上类似于在SELECT语句中使用OR语句,多个OR条件可并
入单个正则表达式。

 

匹配几个字符之一

如果只想匹配特定的字符,可通过指定一组用[和]括起来的字符来完成。

这里,使用了正则表达式[123] Ton。[123]定义一组字符,它的意思是匹配1或2或3。

正如所见,[]是另一种形式的OR语句。事实上,正则表达式[123]Ton为[1|2|3]Ton的缩写,也可以使用后者。但是,需要用[]来定义OR语句查找什么。除非把字符|括在一个集合中,否则它将应用于整个串。

字符集合也可以被否定。为否定一个字符集,在集合的开始处放置一个^即可。因此,尽管[123]匹配字符1、2或3,但[^123]却匹配除这些字符外的任何东西。

 

匹配范围

集合可用来定义要匹配的一个或多个字符。例如,下面的集合将匹配数字0到9:[123456789]。

为简化这种类型的集合,可使用-来定义一个范围。下面的式子功能上等同于上述数字列表:[1-9]。

此外,范围不一定只是数值的,[a-z]匹配任意字母字符。

 

匹配特殊字符

正则表达式语言由具有特定含义的特殊字符构成。由于.[]|-等是正则表达式的特殊字符,如果要匹配这些字符,,必须用\\为前导。\\-表示查找-,\\.表示查找.。这种处理称为转义,正则表达式内具有特殊意义的所有字符都必须以这种方式转义。

       

\\也用来引用元字符(具有特殊含义的字符)。

多数正则表达式实现使用单个反斜杠转义特殊字符,以便能使用这些字符本身。但MySQL要求两个反斜杠(MySQL自己解释一个,正则表达式库解释另一个)。

 

匹配字符类

为更方便工作,可以使用预定义的字符集,称为字符类。

 

匹配多个实例

如果想寻找一个单词并且还能够适应一个尾随的s,可以用正则表达式重复元字符来完成。

 

定位符

为了匹配特定位置的文本,需要使用定位符。

      

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

 

猜你喜欢

转载自blog.csdn.net/weixin_49984044/article/details/108666019