2014-09-28 53 views
-1

我想提取從HTML發佈請求中獲得的逗號分隔值。從HTTP發佈的字符串中提取逗號分隔值

實施例:

****"file"; filename="TEST.csv" 
Content-Type: application/vnd.ms-excel 
RECEIVERID,RECEIVERSITE,SENDERID,EMAIL_TO 
1000003884,PEPSICO LTD.,1005,[email protected] 
1000003884,PEPSICO LTD.,1010,[email protected] 
------WebKitFormBoundary5ADzaHQgUvmKoZPI 
Content-Disposition: form-data; name="submit" 
Submit 
------WebKitFormBoundary5ADzaHQgUvmKoZPI--**** 

欲僅提取數據通過使用正則表達式從RECEIVERID,RECEIVERSITE開始....到,ABC @ company.com

您能否幫我解決這個問題?

在此先感謝! Tanveer

回答

1

使用String.split(delimiter)它將返回一個包含由指定分隔符分隔的所有String的數組。

更多信息,請參見the doc about String

注意,第一個和最後分裂字符串將包含文本,你不想讓你可以隨心所欲使用分割方法之前,去除未格式化爲VALUE,VALUE,VALUE部分。


如果你真的想使用正則表達式,你可以(再次刪除多餘的數據後),這樣來做:

String regex = "[\\n|^|,]*(.*?)[,|$|\\n]"; 
Pattern pattern = Pattern.compile(regex); 
Matcher matcher = pattern.matcher("RECEIVERID,RECEIVERSITE,SENDERID,EMAIL_TO\n" + 
            "1000003884,PEPSICO LTD.,1005,[email protected]\n" + 
            "1000003884,PEPSICO LTD.,1010,[email protected]"); 

while (matcher.find()) 
    System.out.println(matcher.group(1)); 
+0

什麼的'[\\ N |^|,]的意思'正則表達式? – 2014-09-28 15:10:21

0

如果您使用的錨在您的正則^$那麼你需要啓用(?m)Multiline modifier

String text = "****\"file\"; filename=\"TEST.csv\"\n" + 
     "Content-Type: application/vnd.ms-excel\n" + 
     "RECEIVERID,RECEIVERSITE,SENDERID,EMAIL_TO\n" + 
     "1000003884,PEPSICO LTD.,1005,[email protected]\n" + 
     "1000003884,PEPSICO LTD.,1010,[email protected]\n" + 
     "------WebKitFormBoundary5ADzaHQgUvmKoZPI\n" + 
     "Content-Disposition: form-data; name=\"submit\"\n" + 
     "Submit\n" + 
     "------WebKitFormBoundary5ADzaHQgUvmKoZPI--****"; 
final Pattern p = Pattern.compile("(?m)^[^,\\n]*(?:,[^,]*?)+?$"); 
final Matcher m = p.matcher(text); 
while(m.find()){   
    System.out.println(m.group(0)); 
} 

輸出:

RECEIVERID,RECEIVERSITE,SENDERID,EMAIL_TO 
1000003884,PEPSICO LTD.,1005,[email protected] 
1000003884,PEPSICO LTD.,1010,[email protected] 

DEMO

相關問題