2012-07-21 39 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