MySQL REGEXP 3次重复字符

标签 mysql sql regex

我想在mysql中查找有3个重复字符的字符串。我阅读了这里的所有答案 Regex to find repeating numbers但它不适用于 MySQL 5.7:

select  '211' REGEXP '(.)\1\1'; //true but I expect false

select  '211' REGEXP '(.)\1{2}'; // true but I expect false

select  '211' REGEXP '([[:alnum:]])\1\1'; //true but I expect false

select  '211' REGEXP '(\w)\1{2}'; //false but

select  '111' REGEXP '(\w)\1{2}'; // also false

更新:经测试,它在 MySQL 8 上按预期工作。

最佳答案

这可能是:

(.)\1{2}

不幸的是,MySQL 正则表达式不支持反向引用,因此这不起作用。

我想您必须手动定义所有支持的组合并显式地将它们放入正则表达式中,例如:

(000)|(111)|(222)|...|(999)|(aaa)|(bbb)|...|(zzz)

(您需要将 ... 替换为所有其他模式)

如果您想识别仅包含 3 个相似字符且不含其他字符的字符串,请在正则表达式的开头添加 « ^ » 并在末尾添加 « $ »。

关于MySQL REGEXP 3次重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54409093/

相关文章:

php - 压缩 HTML/PDF,存储为 Blob

mysql - MySQL 中何时使用单引号、双引号和反引号

MySQL 5.5 性能

sql - 通过 Access 查询从 Access 数据库导入到 Sql Server 时出现问题

php - 在mysql中创建表约束

javascript - javascript正则表达式中的可选字符

mysql - 如何在 CodeIgniter 中将 unicode 表情符号存储到 MYSQL

sql - 根据条件在 Oracle 中动态重复行

regex - 如何访问正则表达式子程序中的捕获组?

html - 接受从 0 到 60 的数字,但不允许前导零