本文共 1492 字,大约阅读时间需要 4 分钟。
基本字符匹配
select columns from table where columns regexp '字符' order by columns
进行or匹配
select columns from table where columns regexp '字符|字符' order by columns
匹配几个字符之一
通过指定一组用[和]括起来的自负来完成,例如:
select name from products where name regexp '[123] tom ' order by name 匹配1或2或3 tom的字符
匹配范围:[1-9],[a-z],[A-Z]等
例如:select name from products where name regexp '[1-5] tom ' order by name
因为所有学号里都含有2,所以都会匹配。
匹配特殊字符: .、[]、|、_
空白元字符:\\f换页,\\n换行,\\r回车,\\t制表,\\v纵向制表;为了匹配反斜杠(\),需要使用\\\
匹配字符类
[:alnum:] 任意字母和数字,同[a-zA-Z0-9]
[:alpha:] 任意字符,同[a-zA-Z]
[:blank:] 空格或制表,同[\\t]
[:cntrl:] ASCII控制字符,ASCII 0-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个或一个匹配
{n} 指定数目的匹配
{n,} 不少于指定数目的匹配
{n,m} 匹配数目的范围m不超过255
例: select name from product where name regexp '\\[0-9] sticks?\\' order by name
解释说明:[0-9]匹配任意数字,sticks?匹配stick或sticks ?使得s可选,因为?0个或一个匹配。
例: select name from product where name regexp '[[:digit:]] {4}' order by name
解释说明:[:digit:]匹配任意数字{4}要求前面的字符任意数字出现4次,所以[[:digit:]]{4}匹配连在一起的任意四位数。
定位元字符
^ 文本的开始
$ 文本的结尾
[[:<:]] 词的开始
[[:>:]] 词的结尾
例: select name from product where name regexp '^[0-9\\.]' order by name
解释说明:^匹配串的开始所以 ^[0-9\\.] 只在.或任意字符为串中第一个字符才匹配,没有^,还要检测处4个别的行
^的双重用途:在集合中用[和]定义,用它来否定该集合,否则,用来指穿的开始处。
regexp与like的区别:
like匹配整个串而regexp匹配子串,利用定位符,通过用^开始每个表达式,用$结束每个表达式,可以使regexp的作用于like一样。
转载地址:http://fzbyk.baihongyu.com/