代码之家  ›  专栏  ›  技术社区  ›  ubiquibacon

使用正则表达式确定字符串长度是偶数还是奇数

  •  6
  • ubiquibacon  · 技术社区  · 14 年前

    {a, b, c} odd 长度 确切地 a

    (bb|bc|cb|cc)*a(bb|bc|cb|cc)*
    

    这对我都有好处 b c 两边都有 ,但不占奇数 b c

    有什么提示吗?

    1 回复  |  直到 12 年前
        1
  •  4
  •   Daren Thomas    14 年前

    你的绳子将是 前缀 接着是一个 后缀 .

    两者 前缀 后缀 可以是零长度。如果不是,它们要么都是均匀的,要么都是不均匀的。这意味着你有两个主要案例。

    EVENPREFIX a EVENSUFFIX | UNEVENPREFIX a UNEVENSUFFIX
    

    试试这个( 不完整 错误的 ):

    ([bc][bc])*a([bc][bc])*|([bc][bc][bc])*a([bc][bc][bc])*
    

    [bc] :

    (([bc][bc])*a([bc][bc])*)|([bc]([bc][bc])*a[bc]([bc][bc])*)
    

    根据 http://www.fileformat.info/tool/regex.htm

    • a
    • cac
    • ccabb

    我想它和其他的也一样。。。

    左侧保证偶数(或空)序列 b c 右边要么是一个

    Kobi提出了上述改进方案:

    ([bc][bc])*(a|[bc]a[bc])([bc][bc])*
    

    这是怎么回事?

    在里面。第三组保证是均匀的。这样,就保证了整体是不均衡的。