正则表达式遵循以下条件

时间:2017-02-13 06:46:54

标签: regex regex-lookarounds

为包含Σ= {0,1}的字符串集的语言创建正则表达式 输入是一个只包含1或0的字符串。我们必须搜索二进制字符串。

这样语言中的每个字符串都是:

(a)具有5个连续0的序列,或

(b)具有奇数个连续1的序列,在某一点上跟随偶数个连续1的序列。

因此00000,000000,11100000,11111和10011将使用该语言, 但110000不会。

2 个答案:

答案 0 :(得分:0)

^[01]*0{5,}[01]*|[01]*11$

对于(a)它应该匹配,但是(b)我不是很清楚,是否意味着以11结束?

答案 1 :(得分:0)

你必须连接2个正则表达式:

0{5}:匹配5连续0

^1(?:11)*0*(?:11)*0*$

将它们分组:

0{5}|^1(?:11)*0*(?:11)*0*$

<强>解释

^       : start of string
  1     : a 1
  (?:   : start non capture group
    11  : that contains two 1
  )*    : repeated 0 or more times, after that you have an odd number of 1
  0*    : 0 or more 0
  (?:   : start non capture group
    11  : that contains two 1
  )*    : repeated 0 or more times, you then have an even number of 1
  0*    : 0 or more 0
$       : end of string