您的位置:首页 > 数据库 > MySQL

mysql 正则表达式 regexp

2012-12-24 16:05 393 查看
http://www.zytrax.com/tech/web/regex.htm Regular Expressions - User Guide

1. 关键字 regexp等于rlike

http://www.sqlines.com/mysql/regexp_rlike MySQL - REGEXP, RLIKE - Guide, Examples and Alternatives

这两条相同:

select * from users where name regexp '傻'


select * from users where name rlike  '傻'


2. like 和rlike区别

这两条返回不一样,like匹配整个字串,rlike是匹配部分。

select * from users where name rlike  '傻'
select * from users where name like  '傻'


rlike的返回结果是这样



而like的返回结果是空,因为没有人叫‘傻’。

3. 正则表达式

(1). 点号:匹配任意一个字符

(2)| 竖杠:or 两个或多个的选择

select * from users where name rlike  '笨|傻|二'


(3)[] 方框:匹配几个字符之一。其实和竖杠一样的

select * from users where name rlike  '[123]'


其实这条就是竖杠的省略,上下这3条是一样的,方框的作用当表达式复杂才能体现。

select * from users where name rlike  '[1|2|3]'


select * from users where name rlike  '1|2|3'


还可以是范围

select * from users where name rlike  '[1-3]'


(4)\\两个反斜杠:为特殊字符转义(escaping)

查找名字中带“.”的

select * from users where name rlike  '\\.'


(5) 匹配类型

[:alnum:] 任意数字字母,同[a-zA-Z0-9]

[:alpha:] 任意字母,同[a-zA-Z]

[:digit:] 任意数字,同[0-9]

[:print:] 任意可打印字符

[:graph:] 同[:print:],但不包括空格

[:space:] 空格等任意空白字符,同[\\f\\n\\r\\t\\v]

(6) 重复元字符

* 0个或多个匹配(*号前面)

+ 1个或多个匹配,等于{1,}

? 0个或1个匹配,等于{0,1}

{n} 指定书目匹配

{n,} 不少于n次的匹配

{n,m} 匹配数目的范围(m不超过255)

例子

select * from users where name rlike 'apples?'  #匹配apple或apples


select * from users where name rlike '[[:digit:]]{4}'  #匹配四个连续的数字


(7) 定位元字符

^ 文本的开始(字符在后面)

select * from users where name rlike '^傻'


$ 文本的结尾(字符在前面)

select * from users where name rlike 'n$'


(8)

‘/s’ 匹配间隔符

即匹配空格符、制表符、回车符等表示分隔意义的字符,它等价于[ /t/r/n/f/v]。(注意最前面有个空格)

‘/S’ 匹配非间隔符

即间隔符的补集,等价于[^ /t/r/n/f/v]

4. 测试正则表达式

不需要使用数据表

select 'hello'  rlike '[a-z]'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: