急,求一个正则表达式!

ztroma 2006-06-29 11:37:33
现在有一段文本内容如下:
0.0.0.0 0.255.255.255 IANA CZ88.NET
其中,0.0.0.0是起始的IP,0.255.255.255是结束的IP,后面的IANA CZ88.NET是地址
现在要求,将两个IP段和地址三个字段用特殊的符号隔开,如用%隔开,那么得到的形式为:
0.0.0.0%0.255.255.255%IANA CZ88.NET,可以注意到,IANA CZ88.NET中的空格并没有被替换
那么这样的正则表达式,应该如何完成呢?
另外,如果一个IP地址为12.3.123.45,又如何用正则表达式将它的形式改成012.003.123.045呢?
谢谢了!
...全文
214 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztroma 2006-06-30
  • 打赏
  • 举报
回复
太感谢dalie9了,给分!
ztroma 2006-06-29
  • 打赏
  • 举报
回复
请各位高手指教啊!
dalie9 2006-06-29
  • 打赏
  • 举报
回复
第二个还是没弄出来,只是把作法简化了一些,可能用不到那么多正则:
String s = "12.3.123.45";
String currentString = "";
String[] a = s.split("\\.");
for(int i=0;i<a.length;i++){
if(a[i].length()==1){
a[i] = "00"+a[i];
}else if(a[i].length()==2){
a[i] = "0"+a[i];
}
currentString = currentString + a[i] + ".";
}
currentString = currentString.substring(0,currentString.length()-1);
System.out.println(currentString);
最后输出的currentString得值就是012.003.123.045了。
dalie9 2006-06-29
  • 打赏
  • 举报
回复
第一个的正则是:[ ]+(?=([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+|[\\w]+[\\s]+[\\w]+))

第二个我没弄出来,不过给你做了个比较麻烦的,希望能解你燃眉之急,等我在琢磨琢磨再给你发第二个正则:我做的方法如下,是需要正则判断的::
String s = "12.3.123.45";
String[] a = s.split("\\.");
String regs0 = "([0-9]{1})";
String regs1 = "([0-9]{2})";
String currentString = "";
for(int i=0;i<a.length;i++){
if(a[i].matches(regs0)){
Pattern p = Pattern.compile(regs0);
Matcher m = p.matcher(a[i]);
while(m.find()){
a[i] = m.replaceAll("00"+m.group(1));
}
}
if(a[i].matches(regs1)){
Pattern p = Pattern.compile(regs1);
Matcher m = p.matcher(a[i]);
while(m.find()){
a[i] = m.replaceAll("0"+m.group(1));
}
}
currentString = currentString + a[i]+".";
}
currentString = currentString.substring(0,currentString.length()-1);
System.out.println(currentString);
最后输出的currentString得值就是012.003.123.045了
ztroma 2006-06-29
  • 打赏
  • 举报
回复
没人会?

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧