各位客官姥爷好,欢迎回来。我们上节给出了正则表达式在MySQL5.7与MySQL8.0中用法的区别,下面我们将继续正则表达式在Mysql数据库中使用系列内容。 元字符 1. \s:任意空白符 5.7版本 通过上节内容得知:在5.7版本中\t表示制表符,那么\s是否表示匹配任意空白符呢? select ' ' regexp '\s'; 那么\\s呢? select ' ' regexp '\\s', 's' regexp '\\s'; 到底如何才能匹配任意空白符呢?mysql5.7有自己独特的用法[[:space:]] select ' ' regexp '[[:space:]]'; 8.0版本 select ' ' regexp '\\s',' ' regexp '\s'; 可以看到8.0版本直接在通用元字符\s前面再加斜杠即可匹配。 2. \S:任意非空白符 5.7版本 select 'a' regexp '[^[:space:]]',' ' regexp '[^[:space:]]'; 直接在[:space:]前加限定符即可(哈哈,这或许也是设计时有双层[]的原因) 8.0版本 直接在前面加斜杠即可。 select 'a' regexp '\\S',' ' regexp '\\S'; 3. \d:数字 5.7版本 select '0' regexp '[[:digit:]]'; 8.0版本 select '0' regexp '\\d'; 注意[0-9]这个用法均适用于5.7以及8.0版本 4. \D:非数字的任意字符 与\W的用法一致: 5.7版本 8.0版本 [^0-9]这个用法同样也均适用于5.7以及8.0版本。 5. [A-Za-z]:任意字母 5.7版本 select 'A' regexp binary'[[:alpha:]]', 'a' regexp binary'[[:alpha:]]'; select 'a' regexp '[[:lower:]]'; 需要注意的是,虽然这里写的是lower英文,但同样可以匹配大写字母。 [[:upper:]]同理。 但如果我只想匹配小写字母呢,需要加限制词binary select 'a' regexp binary'[[:lower:]]', 'A' regexp binary'[[:lower:]]'; 当然,也可以直接使用[A-Za-z] 进行匹配。 8.0版本 直接使用[A-Za-z]即可,不过这里也是不区分大小写的,要区分的话,同样需要添加限制符binary 非字母的匹配方法与上面的\D类似,这里不过多赘述。 6. \w:字母、数字、下划线 5.7版本 在5.7版本中[[:alnum:]]表示匹配字母和数字,那么想匹配字母数字和下划线,可以这样[[:alnum:]_] select '_' regexp binary'[[:alnum:]_]', 'a' regexp binary'[[:alnum:]_]', '0' regexp binary'[[:alnum:]_]'\G 8.0版本 select '_' regexp '\\w', 'a' regexp '\\w', '0' regexp '\\w'; 7. \W:除字母、数字、下划线以外的字符 用法与\D\S类似,这里就不过多赘述。 以上就是本次的分享,正则表达式之数据库系列正在进行中,欢迎各位客官姥爷关注我,方便您第一次时间收到【干货】! |
|