2017-10-13 55 views
0

我需要在一個數字,如刪除訓練Zero的: 9.2500 = 9.25 由於一前一後由@Avinash拉吉我發現這一點:使用正則表達式我怎麼去除尾隨零和小數此外,如果需要

^(\d+\.\d*?[1-9])0+$ 

它適用於該應用程序。然而,在某些情況下,我公司擁有一批像11.0000和上述正則表達式返回:

11.0 

我需要返回:

11 

我不知道如何刪除小數和零時,有是不是需要?我花了一些時間試圖弄清楚,但我很難過。

+0

,你可以* *用正則表達式做到這一點,但這並不意味着你應該* *),其編程你在用什麼語言? – alfasin

+0

@alfasin我正在使用自動化應用程序。我唯一的選擇是清理正則表達式。如果可以使用java,我會完成。 – BobTucker

+0

鮑勃,你要求一個正則表達式可以完成兩個不同的任務(你能明白爲什麼?)。另一個想法:運行一次,然後運行另一個正則表達式來更新數字格式:'n.0'到'n' – alfasin

回答

1
^(\d+(?:\.\d*?[1-9](?=0|\b))?)\.?0*$ 

演示here


解釋

^   //Beginning of line 
(  //Start collecting our group 
\d+  //All digits before decimal 
(?:  //START-Non collecting group 
\.  //Decimal point 
\d*?  //It should actually be [0-9] 
[1-9]  //Last significant digit after decimal 
(?=0|\b) //Either should be followed by zero or END OF WORD 
)?  //END-Non collecting group 
      //The non-capturing group after decimal is optional 
)   //End collecting our group 
\.?  //Optional decimal (decimal collected if it wasn't used earlier) 
0*  //All the remaining zeros no + as all digits might be significant that is no ending zero 
$   //End of line. 
+1

完美!謝謝!!!! – BobTucker

0

試試這個

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

說明

^ beginning of the term 
\d* digits from 0-9 those can be any number (can be 0 number or more) 
\. escaping the . 
[1-9]* numbers from 1 to 9 (can be 0 number or more) 
([0]+) capturing all 0s in group1 
$ end of the term 

Regex101 here

相關問題