簡體   English   中英

使用正則表達式確定字符串是偶數還是奇數長度

[英]Determine if string is even or odd length with regular expression

我在使用{a, b, c}上的字符串集構建正則表達式時遇到問題,這個字符串是一個odd長度, 只有一個a 到目前為止,這是我最好的嘗試:

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

這不利於甚至bc在兩側的a ,但不占奇bc在兩側組合a

任何提示?

你的字符串將是一個前綴,后跟一個接着一個后綴

前綴后綴都可以是零長度。 如果不是,它們必須是均勻的或兩者都不均勻。 這意味着您有兩個主要案例。

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

我希望它與其他的相匹配......

左側保證bc偶數(或空)序列。 右側是單個bc后跟兩個的倍數(因此它保持不均勻)。

Kobi想出了上述的改進:

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

這是如何運作的?

第一組保證是平等的。 第二組是保證是不均勻的具有單個a內部。 第三組保證是平等的。 因此,整體保證不均勻。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM