2016-03-10 55 views
0

一般來說,我很難理解RE。我一直在尋找很好的參考資料,但迄今爲止還沒有一個讓我清楚。如果有人知道好的資源,請告訴我。我真的很感激。帶星號的正則表達式(帶一個具體示例)

我去了對稀土閱讀材料,並有幾個例子我還沒有能夠理解

..(0 or 0(1 or 11)0)*.. no occurrence of 111

我認爲那裏是一個比賽,該輸入必須包含要麼00100110或只是沒有(正弦*使得可選)

書中說,以下是比賽0110101011000010000101011000011我沒有異議因爲它們全部包含三個中的至少一個(00100110)。

但是,該書說以下是假的111011101101110101011111000011

該書聲稱,..(0 or 0(1 or 11)0)*..意味着沒有發生111有人可以向我解釋爲什麼這是?

+0

正則表達式是在說比賽'0',或者'匹配跟隨0'一個或兩個'1's,任意次數。這意味着沒有發生'111'。 –

+0

@TimBiegeleisen所以它可以是'0'或'010'或'0110'任意多次,但它沒有說任何其他地方發生的事情嗎?就像母艦一樣是確定有'0110111'或'101011000011100101' – stratofortress

+0

到目前爲止,最好的正則表達式資源是http://regular-expressions.info –

回答

0

用於匹配其在直接序列具有不超過兩個1個二進制數的實際的正則表達式是:

^(0|(0(1|11)0))*$ 

此正則表達式的任何數量的零的(第一部分),或任何數目的匹配以下兩種情況:0100110。這意味着正則表達式只會匹配序列中的一個1或一對11

你可以在這裏探索這個正則表達式:

Regex101

+0

@stratofortress請註明這個答案正確的,如果它解決你的問題,謝謝。 –

+0

我看到它的方式,比賽將包括以下內容:'0'' 0110'' 010然後,這告訴我,你不應該結束或以'1'開始。 (而且你也不能有'111')。那麼這本書怎麼說'101011000010000101'和'011000011'匹配 – stratofortress

+0

他們匹配的原因是因爲'0','010'或'0110'可以重複任意次數(這就是'*' '操作手段)。所以它們是匹配的,因爲它們由片段組成,我們知道它們可以串在一起。這有意義嗎? –