1、 正则表达式简介:
正则表达式是用来匹配文本的特殊的字符集合,如果想从一个文本文件中提取电话号码,可以使用正则表达式来完成
2、正则表达式作用
a、正则表达式的作用是匹配文本,将一个正则表达式与一个文本串进行比较
b、mysql 用where 子句对正则表达式提供支持,允许指定正则表达式过滤select查找出的数据
3、mysql中正则表达式格式
格式:
在where 子句中使用regexp 关键字,后面接正则表达式字符
正则表达式与like区别
-1:在where 中可以使用like(not like) 和 regexp(not regexp) 来匹配特定的内容
a、like 匹配整列数据
b、regexp 可以匹配列中任意位置的文本,regexp 更灵活强大
-2:mysql 中正则表达式不区分大小写
实例
a、完成匹配
查询 表food中的列product_name 包含文本1000的所有行
select * from food where product_name REGEXP ‘1000‘;
b、使用 ‘|‘ 来匹配两个串中的一个
查询 表 food 中的列 product_name 包含1000 或 1001的数据
select * from food whereh product_name REGEXP ’1000 | 1001‘;
c、使用’[ ]‘,匹配几个字符串中的一个
查询表food 中的列type 包含有 [ ]条件中的类型
select * from food where type REGEXP ’[猪、鸡、牛] 肉‘;
说明: 正则表达式 [猪、鸡、牛] 肉,[猪、鸡、牛] 定义一组字符,它的意思是匹配 猪或鸡或牛
因此,猪肉、鸡肉都匹配并且返回
d、使用[^ ],不匹配几个字符中的任意一个
查询表food 中的列type 不包含有 [^ ]条件中的类型
select * from food where type REGEXP ’[^猪、鸡、牛] 肉‘;
说明: 正则表达式 [^猪、鸡、牛] 肉,[猪、鸡、牛] 定义一组字符,它的意思是不匹配 猪或鸡或牛
因此,有羊肉则匹配且数据返回
e、匹配一个范围
匹配一个范围,使用集合操作,[1-9] 表示匹配1到9之间的任意一个数字,[a-z] 表示匹配a到z直接的任意一个字符
查询表food 中的列num 范围在[ 01-19]的数据
select * from food where num REGEXP ‘num [01-19]‘;
f、对于特殊字符的匹配
对于特殊字符的匹配,那么待匹配的特殊字符前面要加’\\‘
查询表food 中的列 describe 包含特殊字符 .
select * from food where describe REGEXP ‘\\.‘
Mysql 支持的正则表达式字符集
Mysql 支持的正则表达式字符集
Mysql 支持的正则表达式字符集