導航:首頁 > 源碼編譯 > 編譯原理正則表達式偶數個1

編譯原理正則表達式偶數個1

發布時間:2022-05-30 23:30:29

❶ 如果用正則表達式 匹配一串二進制數,其中0有偶數個,1有奇數個.接受空串

/^(?:$|(?=0*1(?:0*10*1){0,}0*$)1*(?:01*0)+1*$)/

編譯原理中的正規表達式

0+表示至少有一個0
0+10表示010、0010、00010等情形
(0+10)*表示(0+10)的閉包

❸ 編譯原理:寫出正規式包含奇數個1或奇數個0的二進制數串

((0*10*)(0*10*))*(0*10*) | ((1*01*)(1*01*))*(1*01*)
通過(AA)*A的方式保證表達式A出現奇數次,此處的A又可以替換成0*10*和1*01*表示只含一個1或0的任意二進制串。綜合起來可以滿足只出現奇數個1或奇數個0的要求

❹ 設計一個三變數的偶校驗電路,即三個變數中,偶數個1輸出為1,用與非門

設輸入邏輯變數為A、B、C。根據輸入偶數個邏輯1輸出為1,否則輸出為0的題意,就是說A、B、C中有兩個或0個為1,其餘的為0時輸出為邏輯1, 那麼輸出邏輯表達式就應該是

以上邏輯器件全部採用4輸入與非門,不用的輸入端強制接"1"電平並用.1μ電容旁路,以提高抗干擾性能。

❺ 課本上有道題是這樣說的:用正則表達式 表示偶數個0奇數個1的字元串。我知道該如何表達

這是陳意雲老師習題集上的答案 :
even_0_even_1→(00|11)*((01|10)(00|11)*(01|10)(00|11)*)*
even_0_odd_1→1even_0_even_1|0(00|11)*(01|10)even_0_even_1
對於偶數個0和奇數個1構成的串,其第一個字元可能是0或1。
(1)如果是1,那麼剩下的部分一定是偶數個0和偶數個1
(2)如果是0,那麼經過若干個00或11,一定會出現一個01或10,才能保證0的個數是偶數,1的個數是奇數。若串還沒有結束,剩餘部分一定是偶數個0和偶數個1。
這樣,正確的正規定義是:
even_0_odd_1→1even_0_even_1|0(00|11)*(01|10)even_0_even_1
注意:*均應在其左面第一個右括弧的右上角,為書寫方便直接寫在了後面 :)

❻ 編譯原理編程

1)0*10*10*

2)0*(10+)*(1|0)

3)(0*10*10*)*

第一題跟第三題是差不多的

這時候可以發現,只要用一個count來做對錯的識別就能解決,並不是沒有用到state狀態,而是該狀態變為隱性了,如下

/**

*@fnintcheck_data(char*d_line,intn)

*@brief檢查資列串是否符合給定的正則表達式

*@return0不符;1符合

*/

intcheck_data(char*d_line,intn){

inti,count;

for(count=0,i=0;i<n;i++){//只要算出1的個數即可

if(d_line[i]=='1')count++;

}

return(1-(count&1));//當count奇數表示失敗;當count偶數成功

}

第二題的話,就會用到state來紀錄狀態,

而最後離開狀態S4還是被隱含在執行判斷的過程中

#defineS10

#defineS21

#defineS32

#defineS43

intcheck_data(char*d_line,intn){

inti,state;

state=S1;

for(i=0;i<n;i++){

switch(state){

caseS1:

if(d_line[i]=='1')state=S2;break;

caseS2:

if(d_line[i]=='1')return0;//失敗了

/*d_line[i]為'0'*/state=S3;break;

caseS3:

if(d_line[i]=='1')state=S2;break;

caseS4:break;

}

}

return1;

}

基本上上述程式對照自動機就可以比較清楚了

❼ 編譯原理:所有由偶數個0和偶數個1所組成的符號串的集合

(00|11)*((01|10)(00|11)*(01|10)(00|11)*)*

❽ 正則表達式匹配奇偶數

區分奇數和偶數其實就是在整數的基礎上看最後一位嘛

(假如不考慮正負號)

偶數:

全部合起來之後就是:([1-9]d*)?[02468]

奇數同理。


假如開頭需要正負號,奇數直接加上就行了,而偶數中0需要單獨處理(因為不存在-0)。

❾ 編譯原理-用正則表達式表示下面的內容

(1)[a-z]
(2)^[24680]+$ 所有數字都為偶數 ^(?=[1-9])\d*[02468]$|^[02468]$ 所有偶數

(3)^(?=[a-zA-Z0-9]+).*@[^\.]+\.[a-z]+$

測試有效

❿ 編譯原理偶數個0和偶數個1轉換圖

嘛,差不多就是這樣了。思路是分析所有0和1的組合畫出存在的狀態,然後判斷轉移條件,找出可接受的狀態。

閱讀全文

與編譯原理正則表達式偶數個1相關的資料

熱點內容
畢業設計單片機模擬 瀏覽:835
阿里ai雲伺服器 瀏覽:433
小程序雲伺服器可以綁個人賬戶嗎 瀏覽:727
王者榮耀體驗服ios怎麼登陸安卓的 瀏覽:285
客戶想要的與程序員理解的 瀏覽:669
矽谷一普通程序員的一天 瀏覽:456
演算法實現兩個集合合並 瀏覽:74
班長命令什麼意思 瀏覽:139
51單片機c語音 瀏覽:733
悅翔v3壓縮比 瀏覽:714
oppo怎樣修改手機里的文件夾名稱 瀏覽:218
PHP圖片上傳替換 瀏覽:139
androidtv桌面 瀏覽:810
miui10版本怎麼隱藏app 瀏覽:52
阿里雲伺服器怎麼輸入命令 瀏覽:426
如何通過伺服器連接網路 瀏覽:664
一張大事年表pdf 瀏覽:396
雞兔同籠java編程 瀏覽:611
應屆生php程序員簡歷 瀏覽:652
格力三匹壓縮機電流測哪根線 瀏覽:77