【问题标题】:Regex of Binary sequence that does not contains 00不包含 00 的二进制序列的正则表达式
【发布时间】:2016-11-19 22:54:16
【问题描述】:

我正在尝试获取一个正则表达式: - 具有 0 和 1 的任意序列。(仅限二进制) - 并且不包含 00

我知道它们是分开的,但我如何将它们结合起来?

(?:[0-1]+)+

以上用于任何类型的 0101 序列。

这是部分问题的截图:

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

【问题讨论】:

    标签: java c# regex binary


    【解决方案1】:

    我来到了这个表格:

    0?(1+0?)*

    解释:

    1. 0? - 可以以 0 开头
    2. 1+ - 1s 的非空序列
    3. 0? - 后跟最多一个 0
    4. (1+0?)* - 2-3 次重复任意次数

    【讨论】:

    • 亚当,代码匹配简单的00。演示:regex101.com/r/2CFroT/5
    • 这些是 3 个单独的匹配项:第一个 0,第二个 0(和一个空字符串)。
    【解决方案2】:

    正则表达式如0?(1+0)*将匹配字符串的任何部分,因此它将匹配字符串的中间部分如000011000000,它将匹配0110。要检查整个字符串是否匹配,需要添加字符串锚点的开头和结尾,给出^0?(1+0)*$。这也将匹配一个空字符串。要匹配非空字符串,我们可以使用^0?(1+0)+$,但这不会匹配带有单个0 的字符串。所以我们需要添加一个替代项(使用|)来匹配0,从而得到总表达式^((0?(1+0?)+)|0)$

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

    【讨论】:

      【解决方案3】:

      你可以试试这样的:

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

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

      【讨论】:

      • 但它也匹配具有001001...而且它不会匹配10
      • 问题是如果字符串包含任何00序列,则该字符串必须不匹配。上述匹配部分。我会更新上面的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      • 2014-05-20
      • 2022-07-21
      • 1970-01-01
      相关资源
      最近更新 更多