题目:
今天在牛客网看到一道关于数据库正则表达式匹配的问题,发现自己一点不会做。
正则表达式:
一、正则表达式
MySQL 正则表达式通常是在检索数据库记录的时候,根据指定的匹配模式匹配记录中 符合要求的特殊字符串。MySQL 的正则表达式使用 REGEXP 这个关键字来指定正则表达 式的匹配模式,REGEXP 操作符所支持的匹配模式如表所示。
匹配 描述
^ 匹配文本的开始字符
$ 匹配文本的结束字符
. 匹配任何单个字符
*匹配零个或多个在它前面的字符
+号 匹配前面的字符 1 次或多次
字符串 匹配包含指定的字符串
p1|p2 匹配 p1 或 p2
[…] 匹配字符集合中的任意一个字符
[^…] 匹配不在括号中的任何字符
{n} 匹配前面的字符串 n 次
{n,m} 匹配前面的字符串至少 n 次,至多 m 次
举例子
查询以ji开头的学生信息
select id,name from ba where name regexp ‘^ji’;
查询以i结尾的学生信息
select id,name from ba where name regexp ‘i$’;
查询名字开头是l后面不知道是什么字符的学生;
查询名字中包含an的学生信息
select id,name from ba where name regexp ‘an’;
查询名字中有ai,g可有可无
select id,name from ba where name regexp ‘ang*’;
查询名字中含有ang,g至少出现一次的学生信息
select id,name from ba where name regexp ’ang+’;
查询名字包含an或者ei的学生信息
select id,name from ba where name regexp ‘an|ei’;
查找名字中不以a-j开头的任意学生信息
查找名字以han字段开头的学生信息
查询名字不是lilei的学生信息