以下条件的正则表达式

Regex for following condition

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

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

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

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

因此 00000、000000、11100000、11111 和 10011 将在该语言中, 但 110000 不会。

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

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

您必须连接 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