我想在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/