我试图在文件中搜索一组括号,括号内有八个字符,都是1或0,至少有一个1。我目前正在使用下面的regex,列举所有可能的括号集,即暴力强制。有更好的方法吗?
我的正则表达式:
(11111110)|(11111101)|(11111100)|(11111011)|(11111010)|(11111001)|(11111000)|
。。。|(11111111)
等
使用
grep -oP '((?=[01]{8}))0*1[10]*)' file
请参阅regex演示。
详细信息
-o
-输出匹配而非匹配行P
-启用PCRE正则表达式引擎
图案
(
-一个(
字符(?=[01]{8}))
-正向前瞻,需要八个0
或1
字符,最多一个)
0*
-0+零1
-一个1
字符[10]*
-0个或多个零或一- CCD_ 15-一个CCD_
您可以使用此regex,
((?=[10]{8})(?=.*1.*).{8})
解释:
(
->匹配文字(
(起始大括号((?=[10]{8})
-->向前看,确保接下来的八个字符由零和一组成(?=.*1.*)
-->向前看,确保至少存在一个"1"字符.{8}
-->正好匹配八个字符)
-->匹配文字)
(右大括号(
演示
此正则表达式也可以工作:
(?!(00000000))(d{8})