以下内容摘录整理自
《MySQL必知必会》
正则表达式是用来匹配文本的特殊的串(字符合集),在MySQL中在where子句后搭配正则表达式使用。
基本字符匹配:regexp ‘1000’
-- like匹配整个列,若被匹配的文本在列值中出现like将不会找到它,相应的行不会返回值。
select pro_name from products where pro_name like '1000' order by pro_name;
-- regexp在列值中进行匹配,相应的值可以返回,使用^ $也可以匹配整个列值
select pro_name from products where pro_name regexp '1000' order by pro_name;
进行OR 匹配:regexp ‘1000|2000’
匹配几个字符之一:[ ]
-- [123]定义一组字符串,表示匹配1或2或3,可能返回的结果为1 ton;2 ton;3 ton;
select pro_name from products where pro_name regexp '[123] Ton' order by pro_name;
-- [^123]匹配除了这些字符的其他东西
-- [1-5]匹配1到5,匹配了一个范围
匹配特殊字符:\\
正则表达式中的特殊字符必须以\\进行转义:
- \\.表示匹配.
- \\\匹配\
\\也可以引用元字符:
- \\f换页
- \\n换行
- \\r回车
- \\t制表
- \\v纵向制表
匹配预定义的字符表
常用[:digit:]任意数字,同【0-9】
匹配多个实例
元字符 | 说明 |
---|---|
* | 0或多个匹配 |
+ | 1或多个匹配,等于{1,} |
? | 0或1个匹配,等于{0,1} |
{n} | 指定数目匹配 |
{n, } | 不少于指定数目的匹配 |
{n,m} | 匹配数目的范围,m<=255 |
例如,[:digit:]{4},表示匹配连在一起的4位任意数字
定位符
常用:^文本开始 $文本结束