Java8智能字符串解析
是否有一种聪明的方法(可能使用java8流)来提取字符串中的第一个ipAddress,格式与该字符串类似:Java8智能字符串解析,java,string,split,Java,String,Split,是否有一种聪明的方法(可能使用java8流)来提取字符串中的第一个ipAddress,格式与该字符串类似: some string, 151.0.247.187, 54.239.167.92, 52.49.172.244 谢谢我不鼓励使用split,因为这样你总是依赖于索引值,所以对我来说,更好的选择是regex String data="some string, 151.0.247.187, 54.239.167.92, 52.49.172.244"; Pattern pattern=Pa
some string, 151.0.247.187, 54.239.167.92, 52.49.172.244
谢谢我不鼓励使用
split
,因为这样你总是依赖于索引值,所以对我来说,更好的选择是regex
String data="some string, 151.0.247.187, 54.239.167.92, 52.49.172.244";
Pattern pattern=Pattern.compile("([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3})");
Matcher matcher = pattern.matcher(data);
if (matcher.find()) {
System.out.println(matcher.group());
}
输出:
151.0.247.187
1.)查找Ip模式
2.)显示第一组
注意:网上有很多IP模式可用,你可以选择任何合适的模式用逗号分割,取第一个?第一个标记可以是通用字符串或IP,我可以收到类似“some string,151.0.247.187,54.239.167.92,52.49.172.244”或“151.0.247.187,54.239.167.92,52.49.172.244”在这两种情况下,我都需要提取151.0.247.187Try
str.replaceFirst(“.*”(\\d+(\\.\\d+){3})。*”,“$1”)
。作为记录:如果你想避免否决票,你应该发布的不仅仅是要求。我们的想法是帮助您解决代码中的问题;这不是一个你来然后人们为你写代码的地方。至少在大多数情况下是这样的。String.split的可能副本使用正则表达式。此外,字符串不会编译,因为\.
不是字符串中的有效转义序列。此外,如果“某些字符串”中恰好包含类似IP地址的字符序列,则此操作将失败。@VGR oops感谢您的输入错误,我是在网上测试的,但别担心,我也用java测试了这个,我知道我没有涵盖所有的情况,但有保证的输入给了我自由,还说还有很多其他更好的地方,这个正则表达式不是最好的,但在这种情况下,关于split,用户将如何知道哪个索引数组具有第一个IP(循环?)