亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用正則表達式檢測浮點數

如何使用正則表達式檢測浮點數

守著一只汪 2019-11-02 14:31:02
什么是用于處理浮點數的良好正則表達式(例如,類似于Java的Float)答案必須符合以下目標: 1) 1.   2) .2    3) 3.14   4) 5e6   5) 5e-6   6) 5E+6   7) 7.e8   8) 9.0E-10   9) .11e12  總之,它應該忽略前面的跡象要求小數點左邊的第一個字符為非零小數點兩側允許0或多個數字允許數字不帶小數點允許科學計數法允許使用大寫字母或小寫字母“ e”允許正或負指數對于那些想知道的人,是的,這是一個作業問題。在我的研究生CS編譯器課程中,我們以此作為作業。我已經提交了班級答案,并將其發布為該問題的答案。[結束語]我的解決方案沒有得到充分的認可,因為它處理的小數點左邊不超過1位。即使沒有示例在小數點左邊多于1位數字,該分配也確實提到了處理Java浮點數。我將接受的答案張貼在自己的帖子中。
查看完整描述

3 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

只需將小數點和E-then-指數部分都設置為可選:


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

我不明白為什么您也不想讓領導[+-]?也捕獲可能的信號,但是,無論如何!-)


編輯:實際上可能沒有小數點剩余的數字(在這種情況下,我想必須有小數點和其后的1+數字?。虼孙@然需要豎線(替代):


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


查看完整回答
反對 回復 2019-11-02
?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

這是我上交的。


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

為了便于討論,我將這些部分標記為


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

--------------------------------------------------------  ----------------------    

                           A                                       B

A:將所有內容匹配到“ e / E”

B:匹配科學計數法


分解A我們得到三個部分


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

   ----------1----------   ---------2----------   ---3----

第1部分:允許小數點后的1-9,十進制,0個或多個數字(目標1)

第2部分:允許小數點后的1-9,十進制,0個或多個數字(目標1)2)

第3部分:允許1-9中的1個或多個數字,不帶小數(請參閱目標列表中的#4)


分解B我們得到4個基本部分


 ( [eE] [-+]? [0-9]+  )?   

   ..--1- --2-- --3--- -4- .. 

第1部分:要求科學表示法使用大寫或小寫的“ e”(例如目標8和9);

第2部分:允許對指數使用可選的正號或負號(例如目標4、5和6)。

第3部分:允許1或指數的更多數字(目標8)

第4部分:允許科學記號作為一個組是可選的(目標3)


查看完整回答
反對 回復 2019-11-02
  • 3 回答
  • 0 關注
  • 871 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號