2013-10-08 55 views
0

我正在用lex編寫計算器,需要用於識別雙精度的正則表達式。它應該如何書寫?它應該是類似於[[0 + [0-9][0-9]*].[0-9]+] + [1-9][0-9]*,但不能使它在lex中工作。正則表達式lex中的雙精度值

樣品輸入任何雙重或整數(將被轉換爲雙)

+0

你能舉一些例子輸入嗎?你希望你的模式匹配什麼,你想要什麼*不匹配? –

+0

詞法分析器的Flex-lexer; Flex適用於ADobe/Apache UI框架。這在'Flex'的標籤提示中提到。標記時請注意;謝謝 – JeffryHouser

+0

對不起。我無意中包含了它。 – SAD

回答

2

我看到了幾個問題:

  1. 空間是正則表達式顯著:刪除它們。

  2. 方括號([])表示一個字符類,而不是一個分組。使用括號進行分組。

  3. 句號(.)匹配任何東西,我相信你的意圖是 只句號(小數點)匹配,所以你需要用反斜槓 逃脫它。

所以從這一點改變你的正則表達式

((0+[0-9][0-9]*)\.[0-9]+)+[1-9][0-9]* 

和調試。

此外,我不確定您是否理解加號字符(+)(意思是一個或多個字符重複)與管道字符(|)之間的區別,意思是 - 或。