mysql正则表达式匹配非_MySQL的正则表达式

1.  Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。

例如:select * from wp_posts where post_name REGEXP 'hello',可以检索出列post_name中所有包含hello的行

REGEXP '.og'  .是正则表达式中里一个特殊的字符。它表示匹配一个字符,因此,dog,hog,mog等等都能匹配。

注意:

关于LIKE和REGEXP的区别:LIKE匹配整个列。如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外)。而REGEXP在列值内进行匹配,如果被匹配的匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回,这时一个非常重要的差别(当然,如果适应定位符号^和$,可以实现REGEXP匹配整个列而不是列的子集)。

关于大小写的区分:MySQL中正则表达式匹配(从版本3.23.4后)不区分大小写 。如果要区分大小写,应该使用BINARY关键字,如where post_name REGEXP BINARY 'Hello .000'

2.关于OR匹配

为了搜索两个串之一,使用|, 如,select * from products where pro_id REGEXP '1000|2000'  ORDER BY pro_id;

这样就1000和2000都能匹配并返回,当然,使用多个|就可以匹配多个串

3.只是匹配几个字符[]

例如,这样将要匹配[0123456789]可以匹配0到9,[1-4][4-9]也是合法的范围。此外,范围不一定只是数值的,[a-z]匹配任意字母字符

如:SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' ORDER BY prod_name;

4.匹配特殊字符使用\进行转义

\\.能够匹配.

\\f换页

\\n换行

\\r回车

\\t制表

\\纵向制表

注意:为了匹配\本身,需要使用\\\

5.匹配字符类

[:alnum:]    任意字母和数字(通[a-zA-Z0-9])

[:alpha:]     任意字符(同[a-zA-Z])

[:blank:]    空格和制表符(同[\\t])

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

[:lower:]  任意小写字母

[:upper:]   任意大写字母

[:space:]   包括空格在内的任意空白字符

6.匹配多个实例,关于重复元字符

*      0个或者多个匹配

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

?     1个或者多个匹配(等于{0,1})

{n}    指定数目的匹配

{n,}   不少于指定数目的匹配

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

例子:  select prod_name from products where prod_name REGEXP '[[:DIGIT:]]{4}'   ,如前所述,[:digit:]匹配任意素子,因而它为数字的一个几何。{4}确切的要求它前面的字符(任意数字)出现3此,所以[[:digit:]]{4}匹配连在一起的任意4位数字,当然,上面的例子也可以这样写REGEXP '[0-9][0-9][0-9][0-9]'

7.定位符

^  文本的开始

&  文本的结尾

[[:<:>

[[:>:]]   词的结尾

通过使用这些定位符,能够使REGEXP起类似LIKE的作用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值