起始IP 结束IP 地区
61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧
61.54.231.246 61.54.231.246 河南省安阳市 未知地区
61.54.231.9 61.54.231.247 河南省安阳市 红日网吧
61.54.231.248 61.54.231.248 河南省安阳市 安阳师范学院
61.54.231.249 61.54.231.249 河南省安阳市 黑蜘蛛网吧(师范学院附近) 用Java正则表达式把这个替换成类似 061.054.231.245,061.054.231.245, 河南省安阳市 新世纪网吧就是一个IP后弄个逗号,不够3位的在前面补上零。
我这样弄的,可能复杂了,请高手简化一下,谢谢了。
bReader = new BufferedReader(new FileReader("D:\\download\\a.txt"));
bWriter = new BufferedWriter(new FileWriter("f:\\b.txt"));
String string = null;
while ((string = bReader.readLine()) != null) {
bWriter.write(string.replaceAll("(?<=\\d)\\s+", ",")
.replaceAll("(?<=\\D)(\\d{1})(?=(,|\\.))", "00$1")
.replaceAll("(?<=\\D)(\\d{2})(?=(,|\\.))", "0$1")
.replaceAll("(^\\d{1})(?=\\.)", "00$1").replaceAll(
("(^\\d{2})"), "0$1"));
// bWriter.write(string.replaceAll("(?<=\\d)\\s+", ", "));
// bWriter.write(string.replaceAll("(?<=\\d)\\s+",
// ", ").replaceAll("(\\d{1}+)(?=,|\\.)", "00$1"));
bWriter.newLine();
61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧
61.54.231.246 61.54.231.246 河南省安阳市 未知地区
61.54.231.9 61.54.231.247 河南省安阳市 红日网吧
61.54.231.248 61.54.231.248 河南省安阳市 安阳师范学院
61.54.231.249 61.54.231.249 河南省安阳市 黑蜘蛛网吧(师范学院附近) 用Java正则表达式把这个替换成类似 061.054.231.245,061.054.231.245, 河南省安阳市 新世纪网吧就是一个IP后弄个逗号,不够3位的在前面补上零。
我这样弄的,可能复杂了,请高手简化一下,谢谢了。
bReader = new BufferedReader(new FileReader("D:\\download\\a.txt"));
bWriter = new BufferedWriter(new FileWriter("f:\\b.txt"));
String string = null;
while ((string = bReader.readLine()) != null) {
bWriter.write(string.replaceAll("(?<=\\d)\\s+", ",")
.replaceAll("(?<=\\D)(\\d{1})(?=(,|\\.))", "00$1")
.replaceAll("(?<=\\D)(\\d{2})(?=(,|\\.))", "0$1")
.replaceAll("(^\\d{1})(?=\\.)", "00$1").replaceAll(
("(^\\d{2})"), "0$1"));
// bWriter.write(string.replaceAll("(?<=\\d)\\s+", ", "));
// bWriter.write(string.replaceAll("(?<=\\d)\\s+",
// ", ").replaceAll("(\\d{1}+)(?=,|\\.)", "00$1"));
bWriter.newLine();
public static void main(String[] args) {
String str="61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧 ";
String s[]=str.split("(\\s+(?=\\d))|((?<=\\d)\\s+)");
String s_1[]=s[0].split("\\.");
String result="";
for(int i=0;i<s_1.length;i++){
s_1[i]=((Integer.parseInt(s_1[i])+1000)+"").substring(1);
if(i!=s_1.length-1){
result+=s_1[i]+".";
}else{
result+=s_1[i]+",";
}
}
String s_2[]=s[1].split("\\.");
for(int i=0;i<s_2.length;i++){
s_2[i]=((Integer.parseInt(s_2[i])+1000)+"").substring(1);
if(i!=s_1.length-1){
result+=s_2[i]+".";
}else{
result+=s_2[i]+" ";
}
}
result+=s[2];
System.out.println(result);
}}061.054.231.245,061.054.231.245 河南省安阳市 新世纪网吧
没有必要完全用正则
String[] strArr = {"61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧",
"61.54.231.246 61.54.231.246 河南省安阳市 未知地区",
"61.54.231.9 61.54.231.247 河南省安阳市 红日网吧",
"61.54.231.248 61.54.231.248 河南省安阳市 安阳师范学院",
"61.54.231.249 61.54.231.249 河南省安阳市 黑蜘蛛网吧(师范学院附近)" };
for (int i=0;i<strArr.length;i++)
{
strArr[i] = strArr[i].replaceAll("(?<=\\d)\\s+",",")
.replaceAll("(?<=^|\\.|,)(\\d{1})(?=\\.|,)","00$1")
.replaceAll("(?<=^|\\.|,)(\\d{2})(?=\\.|,)","0$1");
}
for (String str:strArr)
{
System.out.println(str);
}