gpt4 book ai didi

regex - 不包含101的正则表达式

转载 作者:行者123 更新时间:2023-12-04 15:09:29 25 4
gpt4 key购买 nike

came across不包含 101 的正则表达式如下:

010+(1+00+000)+(0+1+0+)



我无法理解作者是如何想出这个正则表达式的。所以我只想到不包含 101 的字符串:

01000100



我似乎上面的字符串不会被上面的正则表达式匹配。但我不确定。所以尝试翻译成等效的 pcre 正则表达式 on regex101.com ,但也失败了(因为可以看出我的正则表达式甚至不匹配包含单个 1 的字符串。

我的翻译有什么问题?上面的正则表达式确实正确吗?如果不是,正确的正则表达式是什么?

最佳答案

这是一个更短的表达式 ^0*(1|00+)*0*$
https://www.regex101.com/r/gG3wP5/1

解释:

  • (1|00+)*只要零出现在组中,我们就可以混合零和一
  • ^0*...0*$我们可以在前缀/后缀中拥有任意数量的零


  • 直接翻译原来的regexp就好了
    ^(0*1*0*|(1|00|000)*|(0+1+0+)*)$

    更新
    这似乎是上述正则表达式的人为复杂版本:
  • (1|00|000)*(1|00+)* 相同
  • 它几乎是解决方案,但它不匹配字符串0 , 01.. , 和 ..10
  • 0*1*0*101 不匹配的字符串在里面,但匹配 0和一些 01.. , 和 ..10
  • 我们仍然需要匹配 01.. 的那些, 和 ..10其中有 0 & 1混合在里面,例如01001....10010
  • (0+1+0+)*匹配一些剩余的情况,但仍有一些未匹配的有效字符串
  • 例如10010是不是所有情况都匹配的最短字符串。

  • 因此,该解决方案过于复杂且不完整。

    关于regex - 不包含101的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34836773/

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