0

我正在尝试从 HTTP 请求中获取 User-Agent 值并将其放入一个名为“UserAgent”的单独字段中,但到目前为止还没有成功。看起来我需要查看回车和换行?将不胜感激任何帮助。
下面是 regex101 链接。

https://regex101.com/r/rdu8yE/1

POST /xxx/yyyy HTTP/1.1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0) Gecko/20100101 Firefox/86.0\r\nAccept: application/json\r\nAccept-语言: en-US,en;q=0.5\r\nX-XSRF-TOKEN: 989g8ddfgdf7979df\r\n时间戳: 2021-04-07T18:35:50.639Z\r\n内容类型: application/json;charset=utf -8\r\n内容长度:340\r\n来源:https://example.com\r\n连接:keep-alive\r\n引用者:https://my.example.com\r\n

4

1 回答 1

1

也许这个?^.*?User-Agent: (?<UserAgent>.*?)\\r\\n

它比你需要的多一点,选择在字符串的开头开始选择,消耗但不捕获所有直到用户代理的信号(这里我使用 CRLFUser-Agent :),然后捕获所有内容但不包括下一个 CRLF。

您的原始正则表达式:User-Agent: (?<UserAgent>[^\\r\\n]*)将“n”作为符号类的一部分,其存在将停止捕获(在方括号中定义),因此您只能捕获到单词“Windows”的中途。

如果不清楚,请回复评论:)。

于 2021-07-27T19:00:20.277 回答