2016-11-19 544 views
0

我想獲得一個正則表達式: - 爲0和1的任意序列(僅二進制) - 並且不包含00正則表達式不包含00

我知道他們分開,但我怎麼能結合他們?

(?:[0-1]+)+ 

以上針對任何類型的0101的序列。

這裏是問題的一部分的屏幕截圖:

Here is the part of the question

任何線索參考,將不勝感激。

回答

0

正則表達式,如0?(1+0)*將匹配任何反對部分字符串,因此它將匹配字符串的中間部分,如000011000000,它將匹配0110。要檢查整個字符串匹配是否需要添加字符串錨點的開始和結束,請給予^0?(1+0)*$。這也將匹配一個空字符串。要匹配一個非空字符串,我們可以使用^0?(1+0)+$,但這不匹配一個字符串與一個0。所以我們需要添加一個替代(使用|)來匹配0,導致總表達^((0?(1+0?)+)|0)$

這些括號是捕捉括號,它們可以改爲非捕捉形式,但這會使表達更大,並且在視覺上更加複雜。

1

我來到這個形式:

0?(1+0?)*

解釋:

  1. 0? - 的1小號
  2. 0?非空序列 - 可以用0
  3. 1+開始 - 其次最多隻有一個0
  4. (1+0?)* - 2-3重複任意次數
+0

亞當,代碼匹配簡單的'00'。演示:https://regex101.com/r/2CFroT/5 – Ibrahim

+0

這些是3個單獨的匹配:第一個「0」,第二個「0」(和一個空字符串)。 – Adam

0

你可以嘗試這樣的事:

(10)+|(01)+|1+ 

演示:https://regex101.com/r/2CFroT/4

+0

但它也匹配具有'00'的'1001'...並且它不匹配'1'和'0'。 – Adam

+0

@Adam我更新了我的代碼。謝謝! – Ibrahim

+0

事情是字符串必須不匹配,如果它包含00的任何序列,上述匹配部分。我會更新上面的問題。 –