起始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();

解决方案 »

  1.   

    public class RegexTest {
    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 河南省安阳市 新世纪网吧 
    没有必要完全用正则
      

  2.   


    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);
    }