正则表达式匹配的字符类
- .:匹配任意单个字符
- ^:匹配字符串的开始
- $:匹配字符串的结束
- *:匹配0个或多个前面的元素,尽可能多的
- +:匹配1个或多个前面的元素,尽可能多的
- ?:匹配0个或1个前面的元素,尽可能多的
- *?:匹配0个或多个前面的元素,尽可能少的
- +?:匹配1个或多个前面的元素,尽可能少的
- ??:匹配0个或1个前面的元素,尽可能少的
- [abc]:匹配字符集中的任意一个字符
- [^abc]:匹配除了字符集中的任意一个字符以外的字符,即[abc]的补集
- [a-z]:匹配范围内的任意一个小写字母
- \d:匹配一个数字字符
- \w:匹配一个字母数字字符(包括下划线)
- \s:匹配一个空白字符(空格,换行,制表符)
- {n,m}:指定重复的上线和下线
使用REGEXP进行模式匹配
REGEXP是用于进行正则表达式匹配的运算符
REGEXP用于检查一个字符串是否匹配指定的正则表达式模式,以下是基本语法
select column1,column2,...
from table_name
where column_name regexp 'pattern';
参数说明:
- column1,column2是要选择查询的列名,使用*查询全部
- table_name 是选择从哪一张表中查询数据
- column_name是你要进行正则表达式匹配的列的列名
- pattern是一个正则表达式模式
查找 name 字段中以 'st' 为开头的所有数据:
mysql-> select * from perpson where name regexp '^st'
查找 name 字段中以 'ok' 为结尾的所有数据:
mysql-> select * from peoson where name regexp 'ok$'
查找 name 字段中包含 'mar' 字符串的所有数据:
mysql-> select * from person where name regexp 'mar'
查找 name 字段中以元音字符开头或以 'ok' 字符串结尾的所有数据:
mysql-> select * from person where name regexp '[aeiou]|ok$'
选择订单表中描述中包含 "item" 后跟一个或多个数字的记录:
mysql-> select * from orders where order_description regexp 'item[0-9]+'
使用 BINARY 关键字,使得匹配区分大小写:
mysql-> select * from person where name regexp binary 'Alice'
使用 OR 进行多个匹配条件,以下将选择姓氏为 "Smith" 或 "Johnson" 的员工记录:
mysql-> select * from person where name regexp 'Smith|Johnson'