《2022年MySQL正则表达式的描述Mysql教程.docx》由会员分享,可在线阅读,更多相关《2022年MySQL正则表达式的描述Mysql教程.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年MySQL正则表达式的描述Mysql教程正则表达式(regex)是定义困难查询的一个强有力的工具。这里是一个简洁的资料,它忽视了一些具体的信息。正则表达式定义了一个字符串的规则。最简洁的正则表达式不包含任何保留字。例如,正则表达式hello只和字符串“hello”匹配。一般的正则表达式运用了某些特别的结构,所以它能匹配更多的字符串。例如,正则表达式hello|word既能匹配字符串“hello”也能匹配字符串“word”。举一个更困难一点的例子,正则表达式Ban*s可以匹配字符串“Bananas”、“Baaaaas” 、“Bs”以及其他任何以B开头以s结尾的字符串,中间可以包括随意个
2、a和随意个n的组合。一个正则表达式中的可以运用以下保留字所匹配的字符串以后面的字符串开头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
3、 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&
4、gt; select Bn REGEXP Ba+n; -> 0(表示不匹配)a?匹配一个或零个amysql> select Bn REGEXP Ba?n; -> 1(表示匹配)mysql> select Ban REGEXP Ba?n; -> 1(表示匹配)mysql> select Baan REGEXP Ba?n; -> 0(表示不匹配)de|abc匹配de或abcmysql> select pi REGEXP pi|apa; -> 1(表示匹配)mysql> select axe REGEXP pi|apa; -> 0(表
5、示不匹配)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>
6、 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次以上;在
7、{}内只有一个整型参数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(表示不
8、匹配)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(表示不匹配)-.characters.表示比较元素的依次。在括号内的字符依次是唯一的。但是括号中可以包含通配符, 所以他能匹配更多的字符。举例来说:正则表达
9、式.ch.*c匹配chchcc的前五个字符。=character_class=表示相等的类,可以代替类中其他相等的元素,包括它自己。例如,假如o和(+)是一个相等的类的成员,那么=o=、=(+)=和o(+)是完全等价的。:character_class:在括号里面,在:和:中间是字符类的名字,可以代表属于这个类的全部字符。字符类的名字有: alnum、digit、punct、alpha、graph、space、blank、lower、upper、cntrl、print和xdigitmysql> select justalnums REGEXP :alnum:+; -> 1(表示匹配)mysql> select ! REGEXP :alnum:+; -> 0(表示不匹配):分别匹配一个单词开头和结尾的空的字符串,这个单词开头和结尾都不是包含在alnum中的字符也不能是下划线。mysql> select a word a REGEXP :; -> 1(表示匹配)mysql> select a xword a REGEXP :; -> 0(表示不匹配)mysql> select weeknights REGEXP (wee|week)(knights|nights)$ -> 1(表示匹配)