Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
Regex 匹配每个不带5个以下字符的位流的正则表达式_Regex - Fatal编程技术网

Regex 匹配每个不带5个以下字符的位流的正则表达式

Regex 匹配每个不带5个以下字符的位流的正则表达式,regex,Regex,我需要一个正则表达式,它匹配没有5个后续位出现的每个位流。 例如: 010001111 -> matches 010011111 -> does not match 我能够创建一个长度可以除以5的正则表达式 ((0|1){4}(?!\2)(0|1))+ 有没有一种方法可以在不使用5倍长度的情况下执行此操作?如果您将数据作为文本内容,并且位块用空格分割,则可以使用 \b(?![01]*([01])\1{4})[01]+\b 仅匹配末端不包含5个相同位的数据 看 说明: \b-前

我需要一个正则表达式,它匹配没有5个后续位出现的每个位流。 例如:

010001111 -> matches
010011111 -> does not match
我能够创建一个长度可以除以5的正则表达式

((0|1){4}(?!\2)(0|1))+

有没有一种方法可以在不使用5倍长度的情况下执行此操作?

如果您将数据作为文本内容,并且位块用空格分割,则可以使用

\b(?![01]*([01])\1{4})[01]+\b
仅匹配末端不包含5个相同位的数据

说明

  • \b
    -前导词边界
  • (?![01]*([01])\1{4}
    -如果有任何5个零或零后的1或多个1或2,则会导致匹配失败的负前瞻
  • [01]+
    -一个或多个零或一
  • \b
    -尾随词边界
对于测试独立位块:

^(?![01]*([01])\1{4})[01]+$

请参见

您可以匹配位,并计算其出现次数:

>>> len(re.findall('(?=(1))', '010001111'))
5
>>> len(re.findall('(?=(1))', '010011111'))
6
>>> len(re.findall('(?=(1))', '010110111'))
6

喜欢或者?这可能比正则表达式更适合于更多的按位运算符,您在做什么,需要使用字符串工具解析原始位?