0
我正在用lex編寫計算器,需要用於識別雙精度的正則表達式。它應該如何書寫?它應該是類似於[[0 + [0-9][0-9]*].[0-9]+] + [1-9][0-9]*
,但不能使它在lex中工作。正則表達式lex中的雙精度值
樣品輸入任何雙重或整數(將被轉換爲雙)
我正在用lex編寫計算器,需要用於識別雙精度的正則表達式。它應該如何書寫?它應該是類似於[[0 + [0-9][0-9]*].[0-9]+] + [1-9][0-9]*
,但不能使它在lex中工作。正則表達式lex中的雙精度值
樣品輸入任何雙重或整數(將被轉換爲雙)
我看到了幾個問題:
空間是正則表達式顯著:刪除它們。
方括號([]
)表示一個字符類,而不是一個分組。使用括號進行分組。
句號(.
)匹配任何東西,我相信你的意圖是 只句號(小數點)匹配,所以你需要用反斜槓 逃脫它。
所以從這一點改變你的正則表達式
((0+[0-9][0-9]*)\.[0-9]+)+[1-9][0-9]*
和調試。
此外,我不確定您是否理解加號字符(+
)(意思是一個或多個字符重複)與管道字符(|
)之間的區別,意思是 - 或。
你能舉一些例子輸入嗎?你希望你的模式匹配什麼,你想要什麼*不匹配? –
詞法分析器的Flex-lexer; Flex適用於ADobe/Apache UI框架。這在'Flex'的標籤提示中提到。標記時請注意;謝謝 – JeffryHouser
對不起。我無意中包含了它。 – SAD