首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个MySql正则表达式不工作?

问为什么这个MySql正则表达式不工作?
EN

Stack Overflow用户
提问于 2013-01-17 09:16:42
回答 1查看 1.6K关注 0票数 2
代码语言:javascript
复制
SELECT 'AaYYY1231' REGEXP '[A-Z,0-9]+';

结果:

代码语言:javascript
复制
1

当我期望它返回0的时候,为什么它返回1?它从哪里找到'a‘的匹配项?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-17 09:40:01

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

REGEXP不区分大小写,除非与二进制字符串一起使用。

文档中的一个示例:

代码语言:javascript
复制
mysql> SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A';
+----------------+-----------------------+
| 'a' REGEXP 'A' | 'a' REGEXP BINARY 'A' |
+----------------+-----------------------+
|              1 |                     0 |
+----------------+-----------------------+

此外,它不是贪婪的,所以它不确保整个字符串匹配。修改上面的示例会产生以下结果:

代码语言:javascript
复制
mysql> SELECT 'a' REGEXP BINARY '[A-Z0-9]+', 'Aa' REGEXP BINARY '[A-Z0-9]+';
+-------------------------------+--------------------------------+
| 'a' REGEXP BINARY '[A-Z0-9]+' | 'Aa' REGEXP BINARY '[A-Z0-9]+' |
+-------------------------------+--------------------------------+
|                             0 |                              1 |
+-------------------------------+--------------------------------+

为了说明这一点,您可以为行的开头和结尾添加标志:

代码语言:javascript
复制
mysql> SELECT 'Aa' REGEXP BINARY '^[A-Z0-9]+$';
+----------------------------------+
| 'Aa' REGEXP BINARY '^[A-Z0-9]+$' |
+----------------------------------+
|                                0 |
+----------------------------------+

这会引出你想要的最终答案:

代码语言:javascript
复制
mysql> SELECT 'AaYYY1231' REGEXP BINARY '^[A-Z,0-9]+$';
+------------------------------------------+
| 'AaYYY1231' REGEXP BINARY '^[A-Z,0-9]+$' |
+------------------------------------------+
|                                        0 |
+------------------------------------------+
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14370723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档