MySQL学习足迹记录07--数据过滤--用正则表达式进行检索(二)

2014-11-24 17:08:10 · 作者: · 浏览: 1
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.'^'的双重用途:在集合'[]'中用来否定集合,否则,用来指串的开始处