我正在尝试检测你的内部字符串是否来自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
答案 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'。所以我不清楚你将在真实信息中拥有什么。