2015-05-09 53 views
0

請考慮以下關於標識符的描述:「標識符是字母數字,但必須以小寫字母開始,並且可能不包含連續的大寫字母。 編寫接受這些標識符的DFA。正則表達式 - 不包含連續大寫字母的駱駝案例

這是我的正則表達式,我將用它來轉換爲DFA,但我不認爲它正確

[a-z].(([a-z0-9] | [a-z0-9][A-Z])* | ([a-z0-9] | [A-Z][a-z0-9])*) 
+1

'[A-Z] [A-Z]? ([a-z0-9] + [A-Z])* [a-z0-9] *' –

回答

2

我認爲正確的正則表達式是:

^[a-z][A-Z]?(([a-z0-9][A-Z]?))*$ 

第一:小寫(或號碼) 結束後:無限小寫大寫?小寫大寫?小寫大寫?...

PS:如果你在正則表達式中寫一個點,它將匹配任何字符。要匹配文字.,請使用[.]\.

+1

這個正則表達式接受'0'作爲正確的字符串 –

+1

true我忘記檢查數字。^[A-Z] [A-Z](([A-Z0-9] [A-Z]))* $ – idelcano

1
S -> [a-z] A 
A -> [a-z0-9] A 
A -> [A-Z] B 
B -> [a-z0-9] A 

的S - 開始狀態
A,B - 最終狀態

相關問題