我正在研究基本上是一个 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]+)(?=)
但我不知道如何让正则表达式忽略数字(如果它们中有句点)(实际上,我不知道如何让它首先选择数字,即使它们有句点!)
最佳答案
您可以尝试这个正则表达式:
"(?<![0-9.])[0-9]+(?![0-9.])"
说明:
-
(?<![0-9.])
:消极地向后看。前一个字符不是 0-9 或点。 -
[0-9]+
:0-9中的一位或多位数字。 -
(?![0-9.])
: 消极展望。下一个字符不是 0-9 或点。
关于Java正则表达式查找其中没有句点的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11590370/