mysql与正则匹配
where子句中使用REGEXP(not regexp)关键字,后面接正则表达式字符
like匹配整列的数据
select name from classinfo where name REGEXP '1000';
|或
select name from classinfo where name REGEXP '1000|2000';
[] 匹配几个字符中的一个
匹配1或2或3如果想匹配13 那么可以写成 '[123][123] ton'
select name from classinfo where name REGEXP '[123] ton';
[^ ],不匹配几个字符中的任意一个
select name from classinfo where name REGEXP '[^123] ton';
匹配一个范围使用集合操作
[1-9] 1到9的任意一个数字 [a-z] a到z之间任意一个 字符
[23-45] 匹配的是2345 因为括号内只匹配一个数字
对于特殊字符的匹配,待匹配的特殊字符前面要加'\\';
[:alnum:] 任意字母和数字
[:alpha:] 任意字符[a-zA-Z]
[:blank:] 空格和制表符[\\t]
[:cntrl:] ascll控制字符ascll0到31和127
[:digit:] 任意数字同[0-9]
[:graph:] 与[::print]相同,但不包括空格
[:lower:] 任意小写字母[a-z]
[:print:] 任意可打印字符
[:punct:] 机不在[;alnum;]又不在[:cntrl:]中的任意字符
[:space:] 包括空格在内的任意空白字符同[\\f\\n\\r\\t\\v]
[:upper:] 任意大写字母[A-Z]
[:xdigit:] 任意十六进制数字[a-fA-F0-9]
* 0个或多个匹配
+ 1个或多个匹配
? 0个或1个匹配
{n} 指定数目的匹配
{n,} 不少于指定数目的匹配
{n,m} 匹配数目的范围
^ 文本的开始
$ 文本的结束
[[:<:]] 词的开始
[[:>:]] 词的结尾
select name,info from classinfo where info regexp '[[:<:]]word[[:>:]]' 可以匹配 a word a 也就是单词 word 单词
匹配任意一个数字字符 匹配四个
select name from classinfo where name REGEXP '[[:digit:]] {4}';

浙公网安备 33010602011771号