我试图在
PHP中为mysql编写一个正则表达式来查找(至少出现一次)连续3个相同字符,但不是4个(或更多)相同的字符.
例如“000”我想找到:
> 0 ////// 0/00 / LS /////// 000
> 000 //// 0/00 / LS //////////
> 0 ////// 0/00 / LS //// 000 ///
> 0 ////// 000 // LS ////// 000 /
> 0 ////// 000 // LS // 00000000
但不是:
> 0 ////// 0000 / LS //////////
> 0 ////// 0000 / LS //////////
> 0 ///// 00000 / LS //////////
我已经尝试过下面的代码,我认为它会匹配前面有3个零,后面跟着零或更多不是0的字符,但这导致一些行有单个0和一些000000的
REGEXP '[^0]*[0{3}][^0]*'
非常感谢.
最佳答案 如果您打算在MySQL中使用正则表达式,则不能使用外观.因此,您可以使用带有否定字符类和锚点的交替:
(^|[^0])0{3}([^0]|$)
说明:
>(^ | [^ 0]) – 匹配字符串(^)的开头或0以外的字符的组
> 0 {3} – 正好为3个零
>([^ 0] | $) – 匹配0以外的字符或字符串结尾($)的组.