2017-02-06 12 views
0

我試圖創建一個正則表達式,將匹配一個只包含「0」和「1」的字符,只要它不包含特定序列「00」或任何字符串右端「010」。正則表達式允許序列中間

我的想法是這樣的 1×(011 +)*

但問題出現時,如果字符串以0結束,像1110,那麼它應該是有效的。用我的正則表達式,任何0都必須跟着兩個或更多個,但我無法弄清楚如何做出這個特定的異常。

我需要一個正則表達式來強制任何0後跟兩個或更多個或結束。這將允許以0和01結尾的序列,除了明顯的「以1結尾」的情況之外,如在「111111」中那樣,未親緣化的序列不存在。

如何在一個正則表達式中「截斷」一個條件,允許它按照我的規則繼續下去,還是在那裏結束?

+0

使用['^(?![01] * 01?0)[10] + $'](https://regex101.com/r/hxuCjh/1)。 –

回答

1

您可以修復你的正則表達式是這樣的:

1*(011+)*(01?)? 

在匹配不完整的零組,即001末尾添加(可選)組。

+0

閱讀後它看起來很明顯。非常感謝你! –