2012-07-21 55 views
2

我正在研究基本上是IP檢測器的正則表達式。Java正則表達式找到沒有句點的數字

基本上,我想刪除所有沒有句號的數字。

例如,這裏有一些採樣輸入:

1   >Matches 
12   >Matches 
134  >Matches 
156  >Matches 
1567  >Matches 
1.99  >No Match 
.100  >Don't care 
1.2.3.4 >No Match 
.1.2.3.4 >No Match 

這是用來除去所有的比賽。比賽由空間分隔。舉例來說,如果我輸入的字符串:

"14. 24. asf.d 7 .12 .498 .s g 14091 87.49 .sdf.gs.df 12874 ds.fgs 9.127.41 sd.fg 92.47 sd.fg 892.14 sd.fg .79 12 s.df 47 8 .sdfg 1.9 sdfg 2.4 71. s9 24 .ds.f.g 71.9 8 s.df 4 .g 7 132. .sdfg 4 s.dfg" 

我可能會回到類似於字符串的東西:

"asf.d .s g 87.49 .sdf.gs.df ds.fgs 9.127.41 sd.fg 92.47 sd.fg 892.14 sd.fg s.df .sdfg 1.9 sdfg 2.4 s .ds.f.g 71.9 s.df .g .sdfg s.dfg" 

據我得到的:

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

但我不知道如何使正則表達式忽略數字,如果他們有他們的時期(實際上,我不知道如何獲得它首先選擇數字,即使他們有周期在裏面!)

+0

因爲我完全愚蠢,並沒有看到它,所以謝謝 – 2012-07-21 07:47:02

回答

3

你可以試試這個正則表達式:

"(?<![0-9.])[0-9]+(?![0-9.])" 

說明:

  • (?<![0-9.]):負看看後面。前一個字符不是0-9或點。
  • [0-9]+:0-9中的一個或多個數字。
  • (?![0-9.]):否定向前看。下一個字符不是0-9或點。
+0

作品像魅力,謝謝! – 2012-07-21 07:44:44