我遇到了一個問題,我希望構造一個正則運算式來區分具有偶數個 'a' 和偶數個 'b' 的字串:
一個合理的解決方案是這樣的: (aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)*)* 但是經過檢查,一個簡單的字串 'a' 可以也通過了這個檢查,但我不知道為什么......
此外,基于先前的條件,我還必須允許 'c' 在任何位置存在(0 到多次)。也就是說,字串應該包含偶數個 'a' 和偶數個 'b' 和(0 到多個)數 'c'。只允許使用這三個字符。
如何僅使用正則運算式來解決這個問題?
非常感謝您的幫助!
uj5u.com熱心網友回復:
(aa|bb) ((ab|ba)(aa|bb) (ab|ba)(aa|bb) )但是經過檢查,一個簡單的字串'a'也可以通過這個檢查,但不知道為什么。 ..
您可能忘記將匹配錨定為^ $僅適用于整個字串。無論如何,而且c在任何位置都允許時,這種方法會引起頭痛。我建議對偶數限制使用前瞻斷言:
^(?=[bc]*(a[bc]*a[bc]*)*$)(?=[ac]*(b[ac]*b[ac]*)*$)[abc]*$
(我們可以替代a[bc]*a[bc]*通過(a[bc]*){2}等)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336646.html
標籤:正则表达式
下一篇:獲取括號中的單詞作為組正則運算式
