mysql正则表达式学习

1,匹配任意一个字符
SELECT prood_name
FROM products
WHERE pro_name REGEXP '.000'
ORDER BY prod_name;
返回 'csdn 5000' 'csdn 6000'

这里使用了正则表达式.000。.是正则表达式一个字符,它表示匹配任意一个字符,因此,5000,6000都匹配且返回

2,进行OR匹配

SELECT prood_name
FROM products
WHERE pro_name REGEXP '1000|2000'
ORDER BY prod_name;
1000和2000都匹配并返回

3,匹配几个字符之一

SELECT prood_name
FROM products
WHERE pro_name REGEXP '[123] aaa'
ORDER BY prod_name;

返回 1 aaa, 2 aaa, 3aaa 

这里使用了正则表达式[123]。它的意思是匹配1或2或3


4,匹配范围

SELECT prood_name
FROM products
WHERE pro_name REGEXP '[1-5] aaa'
ORDER BY prod_name;

返回 1aaa,2aaa,3aaa,4aaa,5aaa

这是[1-5]是匹配1-5之间的的数

5,匹配多个实例
SELECT prood_name
FROM products
WHERE pro_name REGEXP '[[:digit:]]{4}'
ORDER BY prod_name;

*匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
+匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
?匹配前面的子表达式零次或一次。例如,”do(es)?” 可以匹配 “do” 或 “does” 中的”do” 。? 等价于 {0,1}。
{n}n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,}n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’ 则等价于 ‘o*’。
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,”o{1,3}” 将匹配 “fooooood” 中的前三个 o。’o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。

[[:digit:]]匹配任意数字,因为它是数字一个集合,{4}确切要求它前面的字符出现4次。

6,匹配字符类
[[:alpha:]] 任何字母 
[[:digit:]] 任何数字 
[[:alnum:]] 任何字母和数字 
[[:space:]] 任何白字符 
[[:upper:]] 任何大写字母 
[[:lower:]] 任何小写字母 
[[:punct:]] 任何标点符号 
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F] 
7,定位元字符

1.“^

  匹配字符串的开始位置,准确来讲应该是一行的开始位置。如果设置了Mutiline多行属性,则也对\n之后和\r之后的位置进行匹配。

      譬如:正则表达式^ab

      可以匹配abc之中的ab,但不能匹配cabc中的ab,原因在于cabc之中的ab之前有c而并非是字符串开始位置。

2.“$

     匹配字符串的末尾结束位置,准确来讲应该是一行的结束位置。如果设置了Mutiline多行属性,则也对\n之前和\r之前的位置进行匹配。

      譬如:正则表达式cd$

      可以匹配acd之中的cd,但不能匹配acda之中的cd,原因在于acda之中的cd之后有多余字符a,并不是字符串结束。同时关注Mutiline属性设置与否的不同。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值