我不能分开HTTP正文标题

时间:2016-11-11 05:09:19

标签: java regex

我正在尝试检测你的内部字符串是否来自http请求的标题,为此我检测到两个换行符(根据标准):

String bufferRequest = socketServer.getBufferPart();

Pattern regexHTTP = Pattern.compile("((.+\\n)+\\n)");
Matcher regexMatcherHTTP = regexHTTP.matcher(bufferRequest);

if (regexMatcherHTTP.find()) {
    String requestHeader = regexMatcherHTTP.group(1);
    // ...

请求缓冲区示例:

GET / HTTP/1.1
abc: def
ghi: jkl

body part 1 ...

body part 2 ...

body etc ...

需要从“GET /”到“jkl”,但他没有发现我,我做错了什么?。

在regexr.com中工作正常:http://regexr.com/3ekjm

2 个答案:

答案 0 :(得分:1)

我的解决方案:

Pattern regexHTTP = Pattern.compile("((.+(\\r\\n|\\n))+(\\r\\n|\\n))");

答案 1 :(得分:0)

我认为你需要使用DOTALL标志,我也修改了正则表达式。

试试这个:

Pattern regexHTTP = Pattern.compile("((.+?)([\\r]?\\n){2}).*", Pattern.DOTALL);

我使用'([\\ r]?\\ n)'因为在Linux / Unix行结尾只是'\ n',而在Windows中它是'\ r \ n'。所以我不清楚你将在真实信息中拥有什么。