String abc ="abc_123,low,101.111.111.111,100.254.132.156,abc,1";
String[] ab = abc.split("(\\d+),[a-z]");
System.out.println(ab[0]);
预期输出:
abc_123
low
101.111.111.111,100.254.132.156
abc
1
问题在于我找不到适合这种模式的正则表达式。
String[] ab = abc.split(",");
System.out.println(ab[0]);
System.out.println(ab[1]);
int i = 2;
while(ab[i].matches("[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}")) {
if(i > 2) System.out.print(",");
System.out.print(ab[i++]);
}
System.out.println();
System.out.println(ab[i++]);
System.out.println(ab[i++]);
ab[2]
和 ab[3]
,可能会更少或更多。String
可以像 abc_123,low,101.111.111.111,100.254.132.156,101.111.111.111,abc,1
这样。 - user4768611,
之前或之后有三个数字和一个.
在正确的位置:String[] ab = abc.split("(?<!\\.\\d{3}),|,(?!\\d{3}\\.)");
首先,通过,
将它们拆分成数组,然后应用正则表达式来检查它们是否符合所需格式。如果是,则将所有这些内容连接起来,用,
分隔。
String abc ="abc_123,low,101.111.111.111,100.254.132.156,abc,1";//or something else.
String[] split = abc.split(",");
String concat="";
for(String data:split){
boolean matched=data.matches("[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}");
if(matched){
concat=concat+","+data;
}else{
System.out.println(data);
}
}
if(concat.length()>0)
System.out.println(concat.substring(1));
}