MySQL学习足迹记录07--数据过滤--用正则表达式进行检索(二)
127)
[:digit:] ==>[0-9]
[:graph:] ==>与[:print:]相同,但不包括空格
[:lower:] ==>[a-z]
[:punct:] ==>即不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:] ==>包括空格在内的任意空白字符[\\f\\n\\r\\t\\v]
[:upper:] ==>[A-Z]
[:xdigit:]==>任意十六进制数[a-fA-F0-9]
[:print:] ==>任意可打印字符
8.空白元字符
\\f ==>换页
\\r ==>回车
\\v ==>纵向制表
9.匹配多个实例
重复元字符
* ==> 0个或多个匹配
+ ==> 1个或多个匹配(等于{1,})
==> 0个或1个匹配(等于{0,1})
{n} ==> 指定数目的匹配
{n,} ==> 不小于指定数目的匹配
{n,m} ==> 匹配数目的范围(m<=255)
eg:
mysql> SELECT prod_name FROM products
-> WHERE prod_name REGEXP '\\([0-9] sticks \\) ' #' '匹配它前面的任何字符的0次或1次出现
-> ORDER BY prod_name;
+----------------+
| prod_name |
+----------------+
| TNT (1 stick) |
| TNT (5 sticks) |
+----------------+
2 rows in set (0.00 sec)
mysql>
SELECT prod_name FROM products
-> WHERE prod_name REGEXP '[[:digit:]]{4}' #匹配连在一起的任意四位数字
-> ORDER BY prod_name;
+--------------+
| prod_name |
+--------------+
| JetPack 1000 |
| JetPack 2000 |
+--------------+
2 rows in set (0.00 sec)
10.定位符
*定位元字符
^ ==> 文本的开始
$ ==> 文本的结尾
[[:<:]] ==> 词的开始
[[:>:]] ==> 词的结尾
eg:
mysql> SELECT prod_name FROM products
-> WHERE prod_name REGEXP '^[0-9\\.]' #'^'定位到串开头,[0-9\\.]表示只有在'.'或任一数字为
-> ORDER BY prod_name; #串中的第一个字符,才匹配它
+--------------+
| prod_name |
+--------------+
| .5 ton anvil |
| 1 ton anvil |
| 2 ton anvil |
+--------------+
3 rows in set (0.00 sec)
11.'^'的双重用途:在集合'[]'中用来否定集合,否则,用来指串的开始处