正则表达式在MySQL5.7和MySQL8.0中的用法以及区别(二)
各位客官姥爷好,欢迎回来。我们上节给出了正则表达式在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类似,这里就不过多赘述。
以上就是本次的分享,正则表达式之数据库系列正在进行中,欢迎各位客官姥爷关注我,方便您第一次时间收到【干货】!