2016-11-19 545 views
0

我想获得一个正则表达式: - 为0和1的任意序列(仅二进制) - 并且不包含00正则表达式不包含00

我知道他们分开,但我怎么能结合他们?

(?:[0-1]+)+ 

以上针对任何类型的0101的序列。

这里是问题的一部分的屏幕截图:

Here is the part of the question

任何线索参考,将不胜感激。

回答

0

正则表达式,如0?(1+0)*将匹配任何反对部分字符串,因此它将匹配字符串的中间部分,如000011000000,它将匹配0110。要检查整个字符串匹配是否需要添加字符串锚点的开始和结束,请给予^0?(1+0)*$。这也将匹配一个空字符串。要匹配一个非空字符串,我们可以使用^0?(1+0)+$,但这不匹配一个字符串与一个0。所以我们需要添加一个替代(使用|)来匹配0,导致总表达^((0?(1+0?)+)|0)$

这些括号是捕捉括号,它们可以改为非捕捉形式,但这会使表达更大,并且在视觉上更加复杂。

1

我来到这个形式:

0?(1+0?)*

解释:

  1. 0? - 的1小号
  2. 0?非空序列 - 可以用0
  3. 1+开始 - 其次最多只有一个0
  4. (1+0?)* - 2-3重复任意次数
+0

亚当,代码匹配简单的'00'。演示:https://regex101.com/r/2CFroT/5 – Ibrahim

+0

这些是3个单独的匹配:第一个“0”,第二个“0”(和一个空字符串)。 – Adam

0

你可以尝试这样的事:

(10)+|(01)+|1+ 

演示:https://regex101.com/r/2CFroT/4

+0

但它也匹配具有'00'的'1001'...并且它不匹配'1'和'0'。 – Adam

+0

@Adam我更新了我的代码。谢谢! – Ibrahim

+0

事情是字符串必须不匹配,如果它包含00的任何序列,上述匹配部分。我会更新上面的问题。 –