分享

正则表达式在MySQL5.7和MySQL8.0中的用法以及区别(二)

 徐_清风 2021-06-07

各位客官姥爷好,欢迎回来。我们上节给出了正则表达式在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类似,这里就不过多赘述。

以上就是本次的分享,正则表达式之数据库系列正在进行中,欢迎各位客官姥爷关注我,方便您第一次时间收到【干货】!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多