日期:2014-05-20  浏览次数:20730 次

为什么我对arp -a 命令产生的流中,使用正则表达式截取mac地址不成功?
代码如下:
try {     
                        process = Runtime.getRuntime().exec(     
                              "arp -a");     
                        bufReader = new BufferedReader(new InputStreamReader(     
                                process.getInputStream())); 
                                 bufReadLineString = bufReader.readLine();    
                        while(  (bufReadLineString = bufReader.readLine())!=null){
                        
                           System.out.println(bufReadLineString);
                            Matcher m=Pattern.compile("([0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2})").matcher(bufReadLineString); 
                       if(m.find()){
                          
                          a= m.group();
                          System.out.println(a);
                        }
                       
                           
                         
                       }
                       
                        
                    } catch (Exception c) {   } 

arp -a 命令如图:该程序就是从下图读出mac地址,但没有成功
java

------解决方案--------------------
[0-9A-F]
这里是大写的,
你dos命令框里面都是小写。。正则区分大小写的
改成
 Matcher m=Pattern.compile("(\\w{2}-\\w{2}-\\w{2}-\\w{2}-\\w{2}-\\w{2})").matcher(bufReadLineString); 
就好了