mysql基础知识-正则表达式
use mydb2;
-- ^在字符串开始处进行匹配
select 'abc' regexp '^a';--1
select * from product where pname regexp '^海';
-- a+ 匹配1个或者多个a,但不包含空字符
select 'stab' regexp '.ta+b';--1
select 'stb' regexp '.ta+b';--0
-- a? 匹配0个或者1个a
select 'stab' regexp '.ta?b'; --1
select 'stb' regexp '.ta?b'; --1
select 'staab' regexp '.ta?b'; --0
-- a*匹配0个或多个a,包括空字符串。可以作为占位符使用。有没有指定字符都可以匹配到数据
select 'stab' regexp '.ta*b';--1
select 'stb' regexp '.ta*b';--1
select '' regexp 'a*';--1
-- [...]匹配括号内的任意单个字符 正则表达式的任意字符是否在前边的字符串中出现
select 'abc' regexp '[xyz]';--0
select 'abc' regexp '[xaz]';--1
-- [^...]注意^符号只有在[]内才是取反的意思,在别的地方都是表示开始处匹配
select 'a' regexp '[^abc]'; --0
select 'x' regexp '[^abc]'; --1
select 'abc' regexp '[^a]'; --除了a之外,还有b和c 1
-- . 匹配任意单个字符,可以匹配除了换行符之外的任意字符
select 'abc' regexp '.b'; --1
select 'abc' regexp '.c'; --1
select 'abc' regexp 'a.'; --1
-- $ 在字符串末尾开始匹配
select 'abc' regexp 'a$'; --0
select 'abc' regexp 'c$'; --1
select * from product where pname regexp '水$'
-- a1|a2 匹配a1或a2
select 'a' regexp 'a|b';
select 'b' regexp 'a|b';
select 'b' regexp '^(a|b)';
select 'a' regexp '^(a|b)';
select 'c' regexp '^(a|b)';--0
-- a{m} 匹配m个a
select 'auuuuc' regexp 'au{4}c';
select 'auuuuc' regexp 'au{3}c';--0
-- a{m,}匹配m个或者更多个a 至少m个
select 'auuuuc' regexp 'au{3,}c';
select 'auuuuc' regexp 'au{4,}c';
select 'auuuuc' regexp 'au{5,}c';--0
-- a{m,n}匹配m到n个,包含m和n
select 'auuuuc' regexp 'au{3,5}c';
select 'auuuuc' regexp 'au{4,5}c';
select 'auuuuc' regexp 'au{5,7}c'; --0
-- (abc) 序列匹配
select 'xababy' regexp 'x(abab)y';
select 'xababy' regexp 'x(ab)*y';
select 'xababy' regexp 'x(ab){1,2}y';
select 'xababy' regexp 'x(ab){3}y';