我想从HTML post请求中提取逗号分隔值。
示例:
****"file"; filename="TEST.csv"
Content-Type: application/vnd.ms-excel
RECEIVERID,RECEIVERSITE,SENDERID,EMAIL_TO
1000003884,PEPSICO LTD.,1005,ZZZ@company.com
1000003884,PEPSICO LTD.,1010,ABC@company.com
------WebKitFormBoundary5ADzaHQgUvmKoZPI
Content-Disposition: form-data; name="submit"
Submit
------WebKitFormBoundary5ADzaHQgUvmKoZPI--****
我想使用正则表达式仅提取从 RECEIVERID,RECEIVERSITE ....到ABC @ company.com 的数据。
你能帮助我吗?
提前致谢!! Tanveer
答案 0 :(得分: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,ZZZ@company.com\n" +
"1000003884,PEPSICO LTD.,1010,ABC@company.com");
while (matcher.find())
System.out.println(matcher.group(1));
答案 1 :(得分:0)
答案 2 :(得分: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,ZZZ@company.com\n" +
"1000003884,PEPSICO LTD.,1010,ABC@company.com\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,ZZZ@company.com
1000003884,PEPSICO LTD.,1010,ABC@company.com