MySQL Regex用于匹配3个相同的字符,但不能在更大的字符串中匹配4个相同的字符

时间:2016-04-17 15:40:14

标签: mysql regex

我正在尝试在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 ////// 000 0 / LS //////////
  • 0 ////// 0 000 / LS //////////
  • 0 ///// 0 000 0 / LS //////////

我已经尝试过下面的代码,我认为它会匹配3个零,前面跟着零个或多个不是0的字符,但是这会产生一些单个0和一些000000的行

REGEXP '[^0]*[0{3}][^0]*'

非常感谢。

1 个答案:

答案 0 :(得分:2)

如果您计划在MySQL中使用正则表达式,则无法使用外观。因此,您可以使用带有否定字符类和锚点的替换:

email

请参阅regex demo

说明:

  • (^|[^0])0{3}([^0]|$) - 匹配字符串开头((^|[^0]))或^以外的字符
  • 的组
  • 0 - 正好是3个零
  • 0{3} - 与([^0]|$)以外的字符或字符串结尾(0)匹配的组。