Regex 匹配每个不带5个以下字符的位流的正则表达式
我需要一个正则表达式,它匹配没有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-前
010001111 -> matches
010011111 -> does not match
我能够创建一个长度可以除以5的正则表达式
((0|1){4}(?!\2)(0|1))+
有没有一种方法可以在不使用5倍长度的情况下执行此操作?如果您将数据作为文本内容,并且位块用空格分割,则可以使用
\b(?![01]*([01])\1{4})[01]+\b
仅匹配末端不包含5个相同位的数据
看
说明:
-前导词边界\b
-如果有任何5个零或零后的1或多个1或2,则会导致匹配失败的负前瞻(?![01]*([01])\1{4}
-一个或多个零或一[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
喜欢或者?这可能比正则表达式更适合于更多的按位运算符,您在做什么,需要使用字符串工具解析原始位?