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}';

posted @ 2020-08-17 21:26  寂静音无  阅读(557)  评论(0)    收藏  举报