每天学习一点MySQL系列(6)——正则表达式

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

1. 基本的字符匹配

  • regexp后面所跟的内容作为正则表达式。
  • '.' 是正则表达式中一个特殊的字符,表示匹配任意一个字符,注意:只是一个
  • 匹配不区分大小写,如果需要区分,需要使用binary关键字。
select  column1 from  TABLE where column2 regexp '9999';
--'.'匹配任意【一个】字符
select  column1 from  TABLE where column2 regexp '.999';
--不区分大小写
select  column1 from  TABLE where column2 regexp 'Hello World';
--需要区分大小写时,使用binary
select  column1 from  TABLE where column2 regexp binary 'Hello World';

2. 进行or匹配-使用'|'

  • 匹配模式:'exp1 | exp2 | exp3......| expn'
  • 功能类似于or语句,多个or条件可以并入单个正则表达式
select  column1 from  TABLE where column2 regexp 'keyword1|keyword2|keyword3';

3. 匹配几个字符之一-使用'[]'

  • []是另外一种形式的or语句,匹配模式:'[exp1exp2exp3......expn]'
  • 匹配指定集合中的任意一个字符:'[exp1exp2exp3......expn]'
  • 匹配指定集合以外的字符:在集合的开始处加入'^''[^exp1exp2exp3......expn]'

4. 匹配范围-使用'-'

  • 使用'-'来定义一个范围,匹配模式:'[m-n]'
  • 匹配数字0-9:[0-9]等价于[0123456789]
  • 匹配字母:[a-z]

5. 匹配特殊字符-使用'\\'

  • 使用'\\'来对字符进行转义,MySQL要求使用两个反斜杠,MySQL解释一个,正则表达式解释一个。
空白元字符
元字符 \\f \\n \\r \\t \\v
说明 换页 换行 回车 制表 纵向制表

6. 匹配字符类

常见字符集(预定义字符类)
[:digit :] 任意数字,同[0-9]
[:lower:] 任意小写字母,同[a-z]
[:upper:] 任意大写字母
[:alnum:] 任意字母和数字,同[a-zA-Z0-9]
[:space:] 包括空格在内的任意字符

7. 匹配多个实例

使用重复字符元,来实现对匹配数目的更强控制。

重复元字符
元字符 说明
* 0个或者多个匹配
+ 1个或者多个匹配,同{1,}
匹配位于?前面字符的0个或者1个,同{0,1},
{n} 匹配前面字符的n个
{n,} 匹配不少于n个
{n,m} 匹配数目的范围,m不超过255

 

8. 定位符

使用定位元字符来匹配指定位置的文本

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

9. 简单的正则表达式测试

--regexp 的返回结果:0(不匹配);1(匹配)
--输入:
select 'puhan is a pig?' regexp 'is';
--输出:
+-------------------------------+
| 'puhan is a pig?' regexp 'is' |
+-------------------------------+
|                             1 |
+-------------------------------+

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章