1,匹配任意一个字符
SELECT prood_name
FROM products
WHERE pro_name REGEXP '.000'
ORDER BY prod_name;
返回 'csdn 5000' 'csdn 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属性设置与否的不同。