是否可以有多个同名的命名捕获组?

问题描述 投票:0回答:0

我正在尝试开发一个基于 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>

此正则表达式正确解析状态行和正文。 但不幸的是,我只解析了最后一个标头,但我想拥有所有这些。

regex regex-group fluent-bit
© www.soinside.com 2019 - 2024. All rights reserved.