mysql怎么匹配数字 mysql 单个字符匹配( 三 )


6) ‘?’表示匹配0个或1个在它前面的字符 。如a?表示0个或1个a字符 。
7) ‘|’如de|abc表示匹配序列de或者abc 。注意虽然[…]也可以表示匹配中的某一个,但是每次仅仅能表示单个字符及[a-bXYZ]实际每一次只代表了一个字符 。
8) ()括号可以应用在表达式中,使得更容易理解 。
9) a{5}表示匹配共5个a,a{2,8}表示匹配2~8个a 。
a*可以写成a{0, } 第二个参数省略表示没有上界;a+可以写成a{1,};a?可以写成a{0,1}
更准确地讲,a{n}与a的n个实例准确匹配 。a{n,}匹配a的n个或更多实例 。a{m,n}匹配a的m~n个实例,包含m和n
m和n必须位于0~RE_DUP_MAX(默认为255)的范围内,包含0和RE_DUP_MAX 。如果同时给定了m和n,m必须小于或等于n 。
!--[if !supportLineBreakNewLine]--
!--[endif]--
10) 标准类别[:character_class:]:
常用的一些标准类别,一般在[]中使用,由于用在[]中故和[a-z]类似,每一次只能顶替一个字符 。(这个有点类似perl里面定义的常用的一些标准类别:\w表示一个单词字符即[a-zA-Z0-9];\W一个非单词字符与\w相反; \d一个数字即[0-9];\D一个非数字;\s一个白空间字符即[\t\f\r\n];\f为换页符;\S一个非白空间字符)
标准的类别名称:
alnum
文字数字字符
alpha
文字字符
blank
空白字符
cntrl
控制字符
digit
数字字符
graph
图形字符
lower
小写文字字符
print
图形或空格字符
punct
标点字符
space
空格、制表符、新行、和回车
upper
大写文字字符
xdigit
十六进制数字字符
使用实例:
SELECT 'justalnums' REGEXP '[[:alnum:]]+';解释其中[[:alnum:]]由于[:alnum:]表示文字数字字符,它又用在[]中,故[[:alnum:]]代表一个字符它为一个文字或者数字 。后面的+号表示1个或多个这样的文字或数字 。
上述语句返回1.那是因为justalnums中是由字母组成的 。
11)字边界:[[::]]表示开始,[[::]]表示结束:
其定义了一个单词的开始和结束边界,这个单词为字字符,这样[[::]]代表这个字字符前面的部分,[[::]]代表这个字字符后面的部分 。字字符为alnum类的字母数字字符或下划线(_);因此[[::]], [[::]]均代表不是字字符的字符,即只要不是字母数字字符以及下划线(_)即可 。因此其可以为什么都不是 。因此[[::]]word[[::]]能够匹配如下的所有情况:
即word单词本身 , word*** 解释***代表不是字母数字以及_的任何字符(如,word-net);***word(如,micorsoft word);***word***(如 , this is a word program.)
举例:[[::]]word[[::]]:
SELECT 'a word a' REGEXP '[[::]]word[[::]]'; 结果为真SELECT 'a xword a' REGEXP '[[::]]word[[::]]'; 结果为假 最后注意的注意:要在正则表达式中使用特殊字符,需要在这些字符前面添加2个反斜杠’\’,举例:SELECT '1+2' REGEXP '1+2'; 结果为0SELECT '1+2' REGEXP '1\+2'; 结果为0SELECT '1+2' REGEXP '1\\+2'; 结果为1解释:这是因为MySQL解析程序解析该SQL语句时:首先将字符串’1\\+2’解析为1\+2;然后把1\+2当作正则表达式,由正则表达式库来解析,它代表1+2 。因此需要加上2个反斜杠 。不要经常犯加一个反斜杠的错误,加一个反斜杠会莫名其妙:如SELECT '1t2' REGEXP '1\t2';结果会返回1本来的意思是匹配1制表符\t以及2,但是由于只添加了一个\所以,解析以后编程了1t2,所以匹配成功 。12)[.characters.]和[=character_class=] 参考资料:
MySQL的模式匹配
MySQL的正则表达式匹配
=========================================================================================================
正则表达式:

推荐阅读