1. 正则表达式运算符
expression NOT REGEXP pattern, expression NOT RLIKE pattern expression REGEXP pattern, expression RLIKE pattern 如果表达式expression匹配给定模式pattern返回1,否则返回0. 如果表达式expression或者模式pattern为NULL,则返回NULL RLIKE和REGEXP一样.
2. 正则表达式语法
^
匹配字符串开始
mysql> SELECT 'fo\nfo' REGEXP '^fo$'; -> 0
mysql> SELECT 'fofo' REGEXP '^fo'; -> 1
$
匹配字符串结束
mysql> SELECT 'fo\no' REGEXP '^fo\no$'; -> 1
mysql> SELECT 'fo\no' REGEXP '^fo$'; -> 0
.
匹配任意一个字符 (包括回车和换行符)
mysql> SELECT 'fofo' REGEXP '^f.*$'; -> 1
mysql> SELECT 'fo\r\nfo' REGEXP '^f.*$'; -> 1
a*
匹配零个或者多个字符a
mysql> SELECT 'Ban' REGEXP '^Ba*n'; -> 1
mysql> SELECT 'Baaan' REGEXP '^Ba*n'; -> 1
mysql> SELECT 'Bn' REGEXP '^Ba*n'; -> 1
a+
匹配一个或者多个字符a
mysql> SELECT 'Ban' REGEXP '^Ba+n'; -> 1
mysql> SELECT 'Bn' REGEXP '^Ba+n'; -> 0
a?
匹配零个或者一个字符a
mysql> SELECT 'Bn' REGEXP '^Ba?n'; -> 1
mysql> SELECT 'Ban' REGEXP '^Ba?n'; -> 1
mysql> SELECT 'Baan' REGEXP '^Ba?n'; -> 0
de|abc
匹配de或者abc
mysql> SELECT 'pi' REGEXP 'pi|apa'; -> 1
mysql> SELECT 'axe' REGEXP 'pi|apa'; -> 0
mysql> SELECT 'apa' REGEXP 'pi|apa'; -> 1
mysql> SELECT 'apa' REGEXP '^(pi|apa)$'; -> 1
mysql> SELECT 'pi' REGEXP '^(pi|apa)$'; -> 1
mysql> SELECT 'pix' REGEXP '^(pi|apa)$'; -> 0
(abc)*
匹配零个或者多个abc
mysql> SELECT 'pi' REGEXP '^(pi)*$'; -> 1
mysql> SELECT 'pipi' REGEXP '^(pi)*$'; -> 1
mysql> SELECT 'pipipi' REGEXP '^(pi)*$'; -> 1
mysql> SELECT 'pipipx' REGEXP '^(pi)*$'; -> 0
{1}, {2,3}
{n}和{m,n}符号提供了更加一般性的多种情况匹配的正则表达式规则,其中m和n都是整数
a*可以写为a{0,}
a+可以写为a{1,}
a?可以写为a{0,1}
具体来讲,a{n}匹配恰好n个字符a,a{n,}匹配n个或者多个字符a,a{m,n}匹配m到n个字符a,包括n个字符a。如果同时给出m和n,则m必须小于或等于n。
mysql> SELECT 'abcde' REGEXP 'a[bcd]{2}e'; -> 0
mysql> SELECT 'abcde' REGEXP 'a[bcd]{3}e'; -> 1
mysql> SELECT 'abcde' REGEXP 'a[bcd]{1,10}e'; -> 1
[a-dX], [^a-dX]
匹配在/不在[a,b,c,d,X]内的任意字符
注意:此处[^a-dX]表示不在[a,b,c,d,X]内的任意字符,注意与^区分
mysql> SELECT 'aXbc' REGEXP '[a-dXYZ]'; -> 1
mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]$'; -> 0
mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]+$'; -> 1
mysql> SELECT 'aXbc' REGEXP '^[^a-dXYZ]+$'; -> 0
mysql> SELECT 'gheis' REGEXP '^[^a-dXYZ]+$'; -> 1
mysql> SELECT 'gheisa' REGEXP '^[^a-dXYZ]+$'; -> 0
[.多个字符.]
SQL中允许的字符匹配有一张【名称-字符】映射表,不常见的字符匹配都可以在这里找到
网址为https://dev.mysql.com/doc/refman/5.7/en/regexp.html#regexp-operators
举几个例子:
1. 匹配换行
mysql> SELECT 'newline\nnewline' REGEXP '[[.newline.]]';
mysql> SELECT 'newline\nnewline' REGEXP '[[.\n.]]';
2. 匹配回车
mysql> SELECT 'enter\tenter' REGEXP '[[.carriage-return.]]';
mysql> SELECT 'enter\tenter' REGEXP '[[.\r.]]';
3. 匹配Tab键
mysql> SELECT 'tab\ntab' REGEXP '[[.tab.]]';
mysql> SELECT 'tab\ntab' REGEXP '[[.\t.]]';
4. 匹配&符号
mysql> SELECT 'https://www.baidu.com/s?tn=hao_pg&ie=utf-8' REGEXP '[[.ampersand.]]';
mysql> SELECT 'https://www.baidu.com/s?tn=hao_pg&ie=utf-8' REGEXP '[[.&.]]';
5. 匹配?符号
mysql> SELECT 'https://www.baidu.com/s?tn=hao_pg&ie=utf-8' REGEXP '[[.question-mark.]]';
mysql> SELECT 'https://www.baidu.com/s?tn=hao_pg&ie=utf-8' REGEXP '[[.\n.]]';
标签:匹配,Ba,正则表达式,MySQL,mysql,REGEXP,pi,SELECT
From: https://blog.51cto.com/u_16270801/8183585