MySQL-正则表达式
Posted 测试家
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL-正则表达式相关的知识,希望对你有一定的参考价值。
概述
实例
基本字符匹配
select employee_name from yw_employee where employee_name regexp '王|李'
or表示匹配其中之一,功能与select语句中的or语句,多个or条件可并入单个正则表达式
select employee_name from yw_employee where employee_name regexp '[薛]占国'
[]是另一种形式的or语句,作用是匹配指定的(其中之一)字符;正则表达式[薛占]国为[薛|占|]国的缩写,它的意思是匹配薛或者占字符集合也可以被否定,即匹配除指定字符外的任何东西,为否定一个字符集,可以在集合开始处设置一个‘^’例如[^薛占]([]定义更准确,|如果不括起来,则应用于整个串)
集合可以用来定义要匹配的一个或多个字符
比如[010203040506070809],为了简化这种类型的集合,可使用(-)来定义一个范围,即[0-9];(范围不仅仅局限于数值,还可以使字母字符等)
正则表达式由具有特定含义的特殊字符构成;如果要匹配这些特殊字符,就需要用\\为前导;\\-表示查找-,\\.表示查找.。
select employee_name from yw_employee where employee_name regexp '\\薛'
这种处理方式就是所谓的转义(escaping),正则表达式内具有特殊意义的所有字符都必须以这种方式转义;(为了匹配反斜杠{\}字符本身,需要使用\\\)
例:多数正则表达式实现使用单个反斜杠转义特殊字符,以便能够使用这些字符本身,而MySQL要求两个反斜杠(MySQL自己解释一个,正则表达式库解释一个) \\也用来引用元字符(具有特殊含义的字符),如下:
字符类(character class):有时候需要检索出我们需要的数字、所有字母字符或所有数字字母字符等的匹配,我们可以使用预定义的字符集,称为字符类;如下:
有时候需要对匹配的数目进行更强的控制,比如:寻找所有的数,不管数中包含多少数字,或寻找一个单词并尾随一个s(如果存在)等情况,我们可以利用正则表达式中的重复元字符来完成;如下
有时候为了匹配特定位置的文本,需要使用定位符,常用定位符列表如下:
以上是关于MySQL-正则表达式的主要内容,如果未能解决你的问题,请参考以下文章