[英]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)*
這不利於甚至b
和c
在兩側的a
,但不占奇b
和c
在兩側組合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
我希望它與其他的相匹配......
左側保證b
或c
偶數(或空)序列。 右側是單個b
或c
后跟兩個的倍數(因此它保持不均勻)。
Kobi想出了上述的改進:
([bc][bc])*(a|[bc]a[bc])([bc][bc])*
這是如何運作的?
第一組保證是平等的。 第二組是保證是不均勻的具有單個a
內部。 第三組保證是平等的。 因此,整體保證不均勻。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.