码迷,mamicode.com
首页 > 数据库 > 详细

MySQL正则表达式

时间:2015-04-26 22:27:00      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

正则表达式是用来匹配文本的特殊的串(字符集和)。比如从文本文件中提取电话号码。

基本字符匹配

SELECT name

FROM Customer

WHERE name REGEXP ‘li‘

 

LIKE与REGEXP之间的重要差别

SELECT Age

FROM Customer

WHERE Age REGEXP ‘16‘

SELECT Age

FROM Customer

WHERE Age LIKE‘1‘

如果执行这两个语句,LIKE不返回数据,REGEXP返回一行

LIKE匹配整个列,如果被匹配的文本仅在列值中出现,like将不会找到它,

而REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它

进行OR匹配

SELECT Age

FROM Customer

WHERE Age REGEXP ‘16|17‘

匹配几个字符之一

SELECT Name

FROM Customer

WHERE Name REGEXP ‘[123] Ton‘

[123]定义一组字符,它的意思是匹配1或2或3,因此,1 ton和2 ton都匹配且返回,

正如所见,[]是另一种形式的OR语句,[123]匹配字符1,2或3,但[^123]却匹配除去这些字符外的任何东西

匹配范围

集合可用来定义要匹配的一个或多个字符

[0123456789] 简化写法[0-9], 范围不限于完整的集合[3-8]或[2-9]也是合法的范围,此外范围不一定只是数值的,[a-z]匹配任意字母字符。

例如:

SELECT Name

FROM Customer

WHERE Name REGEXP ‘[1-3] Ton‘

匹配特殊字符

如何匹配有特殊含义的字符,如[]、 | 、.

为了匹配特殊字符必须用转义字符\\为前导,\\-表示查找-,\\.表示查找.

例如:

SELECT Name

FROM Customer

WHERE Name REGEXP ‘\\.‘

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

\\f 换页

\\n换行

\\r回车

\\t制表

\\v纵向制表

匹配字符类

字符类
说明
[:alnum:] 任意字符和数字(同[a-zA-Z0-9])
[:alpha:] 任意字符([a-zA-Z])
[:blank:] 空格和制表([同\\t])
[:cntrl:] ASCII控制符(ASCII 0到31 和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与print相同但不包括空格
[:lower:] 任意小写字符如[a-z]
[:print:] 任意可打印字符
[:punct:] 既不在 [:alnum:]又不在[:cntrl:]的字符
[:space:] 包含空格在内的任意空白字符(同[\\f\\n\\r\\t\\v])
[:upper:] 任意大写字符(同[A-Z])
[:xdigit:]

任意十六进制数字([a-fA-F0-9])

 

 

 

 

 

 

 

 

 

 

 

 

 

 

匹配多个字符

前面使用的正则表达式都试图匹配单次出现,但有时需要对匹配的数目有更强的控制。

重复元字符
元字符 说明
* 0个或多个匹配
+ 1个或多个匹配(等于{1,})
0个或1个匹配(等于{0,1})
{n} 指定数目的匹配
{n,} 不少于指定数目的匹配
{n,m} 匹配数目的范围(m不超过255)

 

 

 

 

 

 

 

 

例如:

SELECT Name

FROM Customer

WHERE Name REGEXP ‘\\([0-9]\\ sticks?\\)‘

定位符

定位元字符
元字符 说明
^ 文本的开始
$ 文本的结束
[[:<:]] 词的开始
[[:>:]] 词的结尾

 

 

 

 

 

例如:

SELECT Name

FROM Customer

WHERE Name REGEXP ‘^[0-9\\.]‘

MySQL正则表达式

标签:

原文地址:http://www.cnblogs.com/qianlixing/p/4456969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!