本文使用的表还是上一个表:

正则表达式过滤mysql关键词 正则表达式 mysql_正则表达式

一:使用mysql正则表达式


mysql的like只有%和下划线_,regex功能更强大。



其中like要求整个数据都要匹配,而REGEXP只需要部分匹配即可。也就是说,用Like,必须这个字段的所有内容满足条件,而REGEXP只需要有任何一个片段满足即可。




1.select id from elec where id regexp '1007' order by id;    将显示匹配id=1000的行。


2.select id from elec where id regexp '.007' order by id;     将匹配.007的所有行。


3.进行or匹配

select id from elec where id regexp '1001|1003' order by id;

词语中使用了正则表达式1001|1003。|为正则表达式的or操作符。它表示匹配其中之一,因此1000和2000都匹配并返回。

也可匹配多个:1001|1003|1007


4.匹配几个字符之一

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


5.使用[]限定特定字符。

select id from elec where id regexp '100[23]';      返回匹配100x的值,但是这个x被[]限定取值为2,3。

正则表达式过滤mysql关键词 正则表达式 mysql_正则表达式过滤mysql关键词_02

[]实际上相当于另一种形式的or语句,但是不能用'1|2|3 ton'这种形式代替‘[123] ton’,因为mysql假定你的意思是'1'或‘2’或‘3 ton‘。除非把字符|括在一个集合中,否则它将应用于整个串。

[^123]可以匹配这些字符外任何东西。


6.匹配范围

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

[01233456789],

为了简化这种类型的集合,可以用-来定义一个范围。如[0-9],此外范围不一定是数字,如[a-z]匹配任意字母字符。


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

\\也用来引用元字符,具有特殊的含义。如:

正则表达式过滤mysql关键词 正则表达式 mysql_元字符_03


8.匹配字符类

存在着出你自己常用的数组,所有字母字符或者所有数字字母字符等的匹配。为更方便的工作,可以使用预定义的字符集,成为字符类。

正则表达式过滤mysql关键词 正则表达式 mysql_正则表达式_04


9.匹配多个实例

目前为止所有使用的正则表达式都试图匹配单次出现。如果存在一个匹配,改行被检索出来,如果不存在,检索不出任何行。但有时需要对匹配的数目进行更强的控制。例如,

你可能需要寻找所有的数,不管数中包含多少数字,或者你还可能讯炸一个单词并且还能够适应一个尾随化的s。可以用下列正则表达式重复元字符来完成。

正则表达式过滤mysql关键词 正则表达式 mysql_正则表达式_05

举例:

正则表达式过滤mysql关键词 正则表达式 mysql_正则表达式过滤mysql关键词_06

或者:

正则表达式过滤mysql关键词 正则表达式 mysql_mysql_07


10.定位符

正则表达式过滤mysql关键词 正则表达式 mysql_正则表达式_08

注意如果^符号出现在[]里面,代表取反的意思。出现在外面代表定位。

正则表达式过滤mysql关键词 正则表达式 mysql_mysql_09