1. Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。 select * from wp_posts where post_name REGEXP 'hello'; 可以检索出列post_name中所有包含hello的行 2. .匹配除\n之外的任意单个字符 select * from wp_posts where post_name REGEXP '.og'; .是正则表达式中里一个特殊的字符。它表示匹配一个字符,因此,bog,cog,dog等等都能匹配。 注意: 关于大小写的区分:MySQL中正则表达式匹配(从版本3.23.4后)不区分大小写 。 如果要区分大小写,应该使用BINARY关键字,如where post_name REGEXP BINARY 'Hello .000' 3. ^匹配字符串开始位置,如查询所有姓王的人名 select name from 表名 where name REGEXP '^王'; 4. $匹配字符串结束位置,如查询所有姓名末尾是“明”的人名
select name from 表名 where name REGEXP '明$'; 5. OR匹配 为了搜索多个串之一,使用| select * from products where pro_id REGEXP '1000|2000'; 这样就1000和2000都能匹配并返回,当然,使用多个|就可以匹配多个串 6. []匹配几个字符 例如,这样将要匹配[0123456789]可以匹配0到9,[1-4][4-9]也是合法的范围。 此外,范围不一定只是数值的,[a-z]匹配任意字母字符 如查询出w/z/s开头的的人名 SELECT prod_name FROM products WHERE prod_name REGEXP '^[wzs]'; 7. [^……],匹配不包含在[]的字符,如查询出除chenmin之外的人名 SELECT prod_name FROM products WHERE prod_name REGEXP '[^chenmin]'; 8. 匹配特殊字符使用\进行转义 \\.能够匹配. \\f换页 \\n换行 \\r回车 \\t制表 \\纵向制表 注意:为了匹配\本身,需要使用\\\ 9. 匹配字符类 [:alnum:] 任意字母和数字(通[a-zA-Z0-9]) [:alpha:] 任意字符(同[a-zA-Z]) [:blank:] 空格和制表符(同[\\t]) [:digit:] 任意数字(同[0-9]) [:lower:] 任意小写字母 [:upper:] 任意大写字母 [:space:] 包括空格在内的任意空白字符 10. 匹配多个实例,关于重复元字符 * 0个或者多个匹配 + 1个或者多个匹配(等于{1,}) ? 1个或者多个匹配(等于{0,1}) {n} 指定数目的匹配 {n,} 不少于指定数目的匹配 {n,m} 匹配数目的范围(m不超过255) 例子:select prod_name from products where prod_name REGEXP '[[:DIGIT:]]{4}'; 如前所述,[:digit:]匹配任意数字,因而它为数字的一个几何。 [[:digit:]]{4}匹配连在一起的任意4位数字,当然,上面的例子也可以这样写REGEXP '[0-9][0-9][0-9][0-9]' 11. 定位符 ^ 文本的开始 & 文本的结尾 [[:<:]] 词的开始 [[:>:]] 词的结尾 通过使用这些定位符,能够使REGEXP起类似LIKE的作用