保藏本站 保藏本站
真钱棋牌网主页 - 软件测验 - 常用手册 - 站长东西 - 技能社区
主页 > 正则表达式 > 正文

主页 - PHP - 数据库 - 操作体系 - 游戏开发 - JS - Android - MySql - Redis - MongoDB - Win8 - Shell编程 - DOS指令 - jQuery - CSS款式 - Python - Perl

Access - Oracle - DB2 - SQLServer - MsSql2008 - MsSql2005 - Sqlite - PostgreSQL - node.js - extjs - JavaScript vbs - Powershell - Ruby

MySQL中REGEXP正则表达式运用大全

曾经我要查找数据都是运用like后来发现mysql中也有正则表达式了并且感觉功用要好于like,下面我来给咱们共享一下mysql REGEXP正则表达式运用详解,期望此办法对咱们有协助。

MySQL选用Henry Spencer的正则表达式施行,其方针是契合POSIX 1003.2。请拜见附录C:感谢。MySQL选用了扩展的版别,以支撑在SQL句子中与REGEXP操作符一同运用的形式匹配操作。请拜见3.3.4.7节,“形式匹配”。

在本附录中,概括了在MySQL中可用于REGEXP操作的特别字符和结构,并给出了一些示例。本附录未包含可在Henry Spencer的regex(7)手册页面中发现的一切细节。该手册页面包含在MySQL源码分发版中,坐落regex目录下的regex.7文件中。

正则表达式描绘了一组字符串。最简略的正则表达式是不含任何特别字符的正则表达式。例如,正则表达式hello匹配hello。

非普通的正则表达式选用了特别的特定结构,然后使得它们能够与1个以上的字符串匹配。例如,正则表达式hello|word匹配字符串hello或字符串word。

作为一个更为杂乱的示例,正则表达式B[an]*s匹配下述字符串中的任何一个:Bananas,Baaaaas,Bs,以及以B开端、以s完毕、并在其间包含恣意数目a或n字符的任何其他字符串。

以下是可用于随REGEXP操作符的表的形式。

检查图片

运用示例,查找用户表中Email格局过错的用户记载:

SELECT * 
FROM users
WHERE email NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}$'

MySQL数据库中正则表达式的语法,首要包含各种符号的意义。

(^)字符

匹配字符串的开端方位,如“^a”表明以字母a最初的字符串。

mysql> select 'xxxyyy' regexp '^xx';

+-----------------------+
| 'xxxyyy' regexp '^xx' |
+-----------------------+
|           1 |
+-----------------------+
1 row in set (0.00 sec)

查询xxxyyy字符串中是否以xx最初,成果值为1,表明值为true,满意条件。

($)字符

匹配字符串的完毕方位,如“X^”表明以字母X完毕的字符串。

(.)字符

这个字符便是英文下的点,它匹配任何一个字符,包含回车、换行等。

(*)字符

星号匹配0个或多个字符,在它之前有必要有内容。如:

mysql> select 'xxxyyy' regexp 'x*';

这个SQL句子,正则匹配为true。

(+)字符

加号匹配1个或多个字符,在它之前也有必要有内容。加号跟星号的用法相似,仅仅星号答应呈现0次,加号则有必要至少呈现一次。

(?)字符

问号匹配0次或1次。

实例:

现在依据上面的表,能够设备各种不同类型的SQL查询以满意要求。在这儿列出一些了解。考虑咱们有一个表为person_tbl和有一个字段名为称号:

查询找到一切的姓名以'st'最初

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

查询找到一切的姓名以'ok'完毕

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

查询找到一切的姓名包函'mar'的字符串

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

查询找到一切称号以元音开端和'ok'完毕 的

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

一个正则表达式中的能够运用以下保留字

^

所匹配的字符串今后边的字符串最初

mysql> select "fonfo" REGEXP "^fo$"; -> 0(表明不匹配) 
mysql> select "fofo" REGEXP "^fo"; -> 1(表明匹配)

$

所匹配的字符串曾经面的字符串完毕

mysql> select "fono" REGEXP "^fono$"; -> 1(表明匹配) 
mysql> select "fono" REGEXP "^fo$"; -> 0(表明不匹配) 
. 

匹配任何字符(包含新行)

mysql> select "fofo" REGEXP "^f.*"; -> 1(表明匹配) 
mysql> select "fonfo" 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 "pip" REGEXP "^(pi)*$"; -> 0(表明不匹配) 
mysql> select "pipi" REGEXP "^(pi)*$"; -> 1(表明匹配) 

{1}
{2,3}

这是一个更全面的办法,它能够完成前面好几种保留字的功用

a*

能够写成a{0,}

a+

能够写成a{1,}

a?

能够写成a{0,1}

   在{}内只要一个整型参数i,表明字符只能呈现i次;在{}内有一个整型参数i,后边跟一个“,”,表明字符能够呈现i次或i次以上;在{}内只要一个整型参数i,后边跟一个“,”,再跟一个整型参数j,表明字符只能呈现i次以上,j次以下(包含i次和j次)。其间的整型参数有必要大于等于0,小于等于 RE_DUP_MAX(默许是255)。 如果有两个参数,第二个有必要大于等于第一个

[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(表明不匹配)

正则表达式之 Unicode 匹配特别字符
首要声明,本文一切的代码都是在ES6下面运转,ES5需求修正之后才干运转,可是本文没有涉及到太多的ES6新特性,并且因为v8对u修饰符不支撑,最终的

收集收拾ASP.NET中17种常用正则表达式
"^/d+$"//非负整数(正整数+0)"^[0-9]*[1-9][0-9]*$"//正整数"^((-/d+)(0+))$"//非正整数(负整数+0)"^-[0-9]*[1-9][0-9]*$"//负整数"^-/d+$"//整数"^/d+(/./d+)$"//非负浮点数(

Android中手机号、车牌号正则表达式大全
手机号手机称号有GSM:表明只支撑中国联通或许中国移动2G号段(130、131、132、134、135、136、137、138、139、145、147、150、151、152、155、156、157、158、159、

本周排行

更新排行

强悍的草根IT技能社区,这儿应该有您想要的! 友情链接:b2b电子商务
Copyright © 2010 ystekkfj.com. All Rights Rreserved  京ICP备05050695号