Regex 正则表达式在文件中搜索一组括号,括号内有八个字符,都是1或0,至少有一个1?
我试图在一个文件中搜索一组括号,括号内有八个字符,都是1或0,至少有一个1。 我目前正在使用下面的正则表达式,列举所有可能的括号集,即强制使用。 有更好的方法吗 我的正则表达式:Regex 正则表达式在文件中搜索一组括号,括号内有八个字符,都是1或0,至少有一个1?,regex,Regex,我试图在一个文件中搜索一组括号,括号内有八个字符,都是1或0,至少有一个1。 我目前正在使用下面的正则表达式,列举所有可能的括号集,即强制使用。 有更好的方法吗 我的正则表达式: (11111110)|(11111101)|(111111100)|(11111111 011)|(11111 010)|(11111 001)|(11111 000)|。|(11111111111)等您可以使用这个正则表达式 \((?=[10]{8})(?=.*1.*).{8}\) 说明: \(-->匹配文本((
(11111110)|(11111101)|(111111100)|(11111111 011)|(11111 010)|(11111 001)|(11111 000)|
。|(11111111111)
等您可以使用这个正则表达式
\((?=[10]{8})(?=.*1.*).{8}\)
说明:
-->匹配文本\(
(起始大括号))(
-->向前看,确保接下来的八个字符仅由零和一组成(?=[10]{8})
-->向前看,确保至少存在一个“1”字符(?=.*1.*)
-->正好匹配八个字符{8}
-->匹配文字\)
(右括号))
grep -oP '\((?=[01]{8}\))0*1[10]*\)' file
看
详细信息
-输出匹配项,而不是匹配行-o
-启用PCRE正则表达式引擎P
-a\(
字符(
-需要八个(?=[01]{8}\)
或0
字符(最多一个1
)
-0+00*
-a1
char1
-0或更多零或一[10]*
-a\)
)
(?!\(00000000\))\(\d{8}\)
是的,请使用
grep-oP'\b(?=[01]{8}\b)0*1[10]*'
请看,我修改了我的评论,因为我没有意识到您希望在括号内匹配这些二进制数据。感谢您的帮助,但是仍然可以找到我希望避免的字符串(00000000),因为它与基本大小写不匹配(00000000)。检查这个,这个也很好用。当然,正如Wiktor所说的“伟大的Regexer”:)参见。