解析CSV正则表达式最新

import java.io.BufferedReader;  
import java.io.BufferedWriter;  
import java.io.File;  
import java.io.FileNotFoundException;  
import java.io.FileReader;  
import java.io.FileWriter;  
import java.io.IOException;  
import java.util.ArrayList;  
import java.util.List;  
import java.util.logging.Level;  
import java.util.logging.Logger;  
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  
public class AnalysisCsv
{
 private static final String SPECIAL_CHAR_A = "[^/",//n  ]";  
 private static final String SPECIAL_CHAR_B = "[^/",//n]";  
 private static final String SPECIAL_CHAR_c = "[^/",//n  ]"; 
 /** 
 * 构造,禁止实例化 
 */ 
  private AnalysisCsv()
  {  
  } 
  public static void main(String[]args)
  {
         try
         {  
             readCsvFile("D://Eclipseworkspace//AnalysisCsv//江苏省高邮中学2003届毕业生名单.csv");  
         }
         catch (FileNotFoundException ex)
         {  
            Logger.getLogger(AnalysisCsv.class.getName()).log(Level.SEVERE, null, ex);  
         }
         catch (IOException ex)
         {  
            Logger.getLogger(AnalysisCsv.class.getName()).log(Level.SEVERE, null, ex);  
        }   
  }
 
 
 
  /** 
      * CSV文件读取<BR/> 
      * 读取绝对路径为argPath的CSV文件数据,并以List返回。        * 
      * @param argPath CSV文件绝对路径 
      * @return CSV文件数据(List<String[]>) 
      * @throws FileNotFoundException 
      * @throws IOException 
      */ 
     public static List readCsvFile(String argPath) throws FileNotFoundException, IOException
     {  
         AnalysisCsv util = new AnalysisCsv();  
         File cvsFile = new File(argPath);  
        List list = new ArrayList();  
         FileReader fileReader = null;  
         BufferedReader bufferedReader = null;  
           try
            {  
             fileReader = new FileReader(cvsFile);  
             bufferedReader = new BufferedReader(fileReader);  
             String regExp = util.getRegExp();   
             System.out.println(regExp);  
             String strLine = "";  
            String str = "";  
             while ((strLine = bufferedReader.readLine()) != null)
             {  
                 Pattern pattern = Pattern.compile(regExp);  
                 Matcher matcher = pattern.matcher(strLine);  
                   List list2 = new ArrayList();  
                 while(matcher.find())
                 {  
                   str = matcher.group();  
                    str = str.trim();  
                    if (str.endsWith(","))
                    {  
                        str = str.substring(0, str.length()-1);  
                         str = str.trim();  
                     }  
                    if (str.startsWith("/"") && str.endsWith("/""))
                    {  
                        str = str.substring(1, str.length()-1);  
                        if (util.isExisted("/"/"", str))
                        {  
                            str = str.replaceAll("/"/"", "/"");  
                        }  
                    }  
                    if (!"".equals(str))
                    {  
                        
                      System.out.print(str+" ");  
                      //listTemp.add(str); 
                     
                    }
                    list.add(str);
                   
                 }  
                 list2.add("a");
                 list2.add("b");
                 list2.add("c");
                 list.clear();
             }  
           }
         catch (FileNotFoundException e)
         {  
             throw e;  
      }
         catch (IOException e)
         {  
          throw e;  
      }
         finally
         {  
           try
           {  
             if (bufferedReader != null)
             {  
              bufferedReader.close();  
             }  
            if (fileReader != null)
             {  
                fileReader.close();  
             }  
            }
           catch (IOException e)
           {  
             throw e;  
            }  
         }  
        return list;  
     }  
    
     /** 
      * @param argChar 
      * @param argStr 
      * @return 
      */ 
    private boolean isExisted(String argChar, String argStr)
    {  
     boolean blnReturnValue = false;       
     if ((argStr.indexOf(argChar) >= 0)&& (argStr.indexOf(argChar) <= argStr.length()))
     {  
            blnReturnValue = true;  
     }  
         return blnReturnValue;  
     }  
   //"(([^",/n  ]*[,/n  ])*([^",/n  ]*"{2})*)*[^",/n  ]*"[  ]*,[  ]*|[^",/n]*[  ]*,[  ]*|"(([^",/n  ]*[,/n  ])*([^",/n  ]*"{2})*)*[^",/n  ]*"[  ]*|[^",/n]*[  ]*
   //
   //
   //
     /** 
    * 正则表达式。 
     * @return 匹配CSV文件里最小单位的正则表达式。 
     */ 
     private String getRegExp()
    {  
       String strRegExp = "";              
       strRegExp ="/"(("+ SPECIAL_CHAR_A + "*[,//n  ])*("+ SPECIAL_CHAR_A + "*/"{2})*)*"+ SPECIAL_CHAR_A + "*/"[  ]*,[  ]*" 
                        +"|"+ SPECIAL_CHAR_B + "*[  ]*,[  ]*" 
                        + "|/"(("+ SPECIAL_CHAR_A + "*[,//n  ])*("+ SPECIAL_CHAR_A + "*/"{2})*)*"+ SPECIAL_CHAR_A + "*/"[  ]*" 
                        + "|"+ SPECIAL_CHAR_B + "*[  ]*";            
       return strRegExp;  
 }  

 

 

 

阅读更多
换一批

没有更多推荐了,返回首页