2014-09-28 2 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

Что это значит для '[\\ п |^|,]' регулярного выражения? –

0
^[^,]*?(?=\b\w+,)|(.*,[^\n]*) 

Попробуйте this.Grab в capture.Do не забудьте добавить флаги g и s.

См. Демонстрационную версию.

http://regex101.com/r/lS5tT3/84

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

Смежные вопросы