正则表达式只有一个0的块,长度均匀

时间:2015-02-09 16:51:43

标签: regex

字母表为{0, 1}

A" 0s"表示0s的子字符串不包含在0s的较长子字符串中。

我想出了:(0(00)*)* 1* 00(00)* 1* (0(00)*)*

这是对的吗?

3 个答案:

答案 0 :(得分:1)

对于一个偶数长度的零块,其词汇为1和0:

^1*(00)+1*$

答案 1 :(得分:1)

grep -oP '(?<=^|1)(00)+(?=1|$)' input
  • (00)+ - 偶数个零
  • (?<= ^ | 1 ) - 之前(左上下文):“1”或字符串的开头
  • (?= 1 | $ ) - 之后(右上下文):“1”或字符串的结尾
  • grep -oP - regexp可以以多种不同的方式使用; -P - 包含Perl扩展名; grep -o - 仅打印匹配的部分

带输入

000
0000
00001
11100110000001

输出

0000
0000
00
000000

答案 2 :(得分:0)

这应该有效

 (\b(00){1,})(?!0)

我也尝试了你的解决方案,但它没有工作