例如,如果我们查看 5.56 和 183.55.0.144。基本上,当你做这样的事情时/\d+\.\d+/
它匹配 5.56、189.55 和 0.144。有没有办法通过正则表达式仅匹配数字而不匹配 ip 地址的部分?我尝试使用前瞻,但我不知道它应该是什么样的......
这是我尝试使用的一组示例:
- 5.56
- 183.55.0.144
- 4544445555.6877878487874
- 1.75.
如何得到 1,3 和 4,而不需要 2 的部分?
我尝试过类似的东西:
\d+\.\d+
\d+\.\d(?!\.)
-
(?<!\.)\d+\.\d+
(很接近...)
(?<!\.)\d+\.\d(?!\.)
-
(?!(?:[0-9]{1,3}\.){3}[0-9]{1,3})\d+\.\d+(?!\.)\d+
(很接近)
\d+\.(?!(?:\.\d+){2})\d+
-
(?<!(?:\.\d){2})\d+\.(?!(?:\.\d+){2})\d+
还有许多类似的不同形式。
谷歌给出了类似这样的东西:[-+]?[0-9]*\.?[0-9]+
or [+-]?[0-9]+[.][0-9]*([e][+-]?[0-9]+)?
还有许多其他变体。但它们都是ip的匹配部分。
附:对不起,我的英语不好。
示例数据的另一个选项可能是:
(?<!\S)\d+\.\d+\b(?!\.\d)
解释
-
(?<!\S)
负向后看,断言左侧有一个空白边界
-
\d+\.\d+\b
匹配 1+ 位数字.
1+ 位数字
-
(?!\.\d)
负向前瞻,断言不是.
右边跟着一个数字
See a 正则表达式101演示 https://regex101.com/r/HExzXN/1.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)