我正在尝试开发一个基于 ruby 的正则表达式来解析 http 响应。
我的问题是:如何将所有 http 标头名称和值作为捕获组?我只能拍到最后一张
这是我的正则表达式:
/^(?<statusline>HTTP\/(?<protocolversion>\d\.\d) (?<statuscode>\d+) (?<reasonphrase>[^\r\n]+))\r?\n(?:(?<headername>[\w-]+):\s*(?<headervalue>[^\r\n]*)\r?\n)*\r?\n(?<body>[\s\S]*)/m
和我的测试数据:
HTTP/1.1 200 No Content
Date: Mon, 19 Jul 2004 16:18:20 GMT
Server: Apache
Last-Modified: Sat, 10 Jul 2004 17:29:19 GMT
ETag: "1d0325-2470-40f0276f"
Accept-Ranges: bytes
Content-Length: 9328
Connection: close
Content-Type: text/html
<HTML>
<HEAD>
</HEAD>
<BODY>
</BODY>
</HTML>
此正则表达式正确解析状态行和正文。 但不幸的是,我只解析了最后一个标头,但我想拥有所有这些。