Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL正则表达式,用于在更大的字符串中完全匹配3个相同的字符,但不匹配4个相同的字符_Mysql_Regex - Fatal编程技术网

MySQL正则表达式,用于在更大的字符串中完全匹配3个相同的字符,但不匹配4个相同的字符

MySQL正则表达式,用于在更大的字符串中完全匹配3个相同的字符,但不匹配4个相同的字符,mysql,regex,Mysql,Regex,我试图在PHP中为mysql编写一个正则表达式,以便在一行中查找(至少出现一次)恰好3个相同的字符,而不是4个(或更多)相同的字符 例如,对于“000”,我想找到: 0///0/00/LS///strong>000 000///0/00/LS////////// 0//0/00/LS///strong>000/// 0//strong>000//LS//////strong>000/ 0//strong>000//LS//00000000 但不是: 0//0000/LS//////////

我试图在PHP中为mysql编写一个正则表达式,以便在一行中查找(至少出现一次)恰好3个相同的字符,而不是4个(或更多)相同的字符

例如,对于“000”,我想找到:

  • 0///0/00/LS///strong>000
  • 000///0/00/LS//////////
  • 0//0/00/LS///strong>000///
  • 0//strong>000//LS//////strong>000/
  • 0//strong>000//LS//00000000
但不是:

  • 0//0000/LS//////////
  • 0///0000/LS//////////
  • 0///00000/LS//////////
我曾经尝试过下面的代码,我认为它会匹配3个零,后面是0或更多不是0的字符,但是这导致了一些行有单个0和000000

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

非常感谢。

如果您计划在MySQL中使用正则表达式,则不能使用lookarounds。因此,您可以将交替与否定字符类和锚定一起使用:

(^|[^0])0{3}([^0]|$)

说明:

  • (^ |[^0])
    -与字符串开头(
    ^
    )或
    0
    以外的字符匹配的组
  • 0{3}
    -正好是3个零
  • ([^0]|$)
    -与
    0
    以外的字符或字符串结尾(
    $
    )匹配的组
您可以使用:
选择'mystr'REGEXP'[[::]]'