gpt4 book ai didi

最多一个中缀 00 和一个中缀 11 的正则表达式

转载 作者:行者123 更新时间:2023-12-02 00:53:38 24 4
gpt4 key购买 nike

我有一个位序列,它也可以从 0 开始。我想写一个正则表达式,只匹配序列,其中包含 00 <= 一次和 11 <= 一次。

我的尝试是 ^([01](?!(?:[^(00|11)]*(00|11){2})))*$,我试过了与 regex101.com .遗憾的是,这并没有真正起作用。

例如,它不匹配 010000(这是正确的)但确实匹配 01000100,这显然不应该被检测到。

最佳答案

在您的模式中,这部分 [^(00|11)] 使用否定字符类,它将匹配列出的以外的任何字符类,可以写成 [^01|) (]

一种选择是使用 2 个负前瞻断言 00 和 11 出现的次数不超过 2 次,并使用 1 个正前瞻断言有 11。

^(?!(?:[01]*11){2})(?!(?:[01]*00){2})(?=[01]*11)[01]*00[01]*$

解释

  • ^ 字符串开始
  • (?!(?:[01]*11){2}) 否定前瞻,断言右边的不是 2 乘以 11
  • (?!(?:[01]*00){2}) 否定前瞻,断言右边不是 00 的 2 倍
  • (?=[01]*11) 正面前瞻,断言 11
  • [01]*00[01]* 匹配 0+ 次 0 或 1,然后是 00,然后是 0+ 次 0 或 1
  • $ 字符串结束

Regex demo

关于最多一个中缀 00 和一个中缀 11 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56012036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com