2

我正在研究基本上是 IP 检测器正则表达式。

基本上,我想删除所有没有句点的数字。

例如,以下是一些示例输入:

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]+)(?=)

但我不确定如何让正则表达式忽略这些数字(如果它们中有句点)(实际上,我不确定如何让它首先选择数字,即使它们中有句点!)

4

1 回答 1

3

你可以试试这个正则表达式:

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

解释:

  • (?<![0-9.]): 负面的看后面。前一个字符不是 0-9 或点。
  • [0-9]+: 0-9 中的一位或多位数字。
  • (?![0-9.]): 负面展望。下一个字符不是 0-9 或点。
于 2012-07-21T07:41:59.357 回答