正则表达式 - 字符串第一个括号内的字符串

Regex - String within the first parenthesis of string

我正在尝试使用 AWS Logs Insights 了解我网站访问者的概况。

我的查询如下所示:

fields @timestamp, @message
  | parse @message /(?<@ip>(?<=User-Agent)(.*)(?=X-Forwarded-Proto))/
  | stats count() as requestCount by @ip
  | filter ispresent(@ip)
  | sort requestCount desc

部分结果是这样的:

=Mozilla/5.0 (iPhone; CPU iPhone OS 15_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Mobile/15E148 Safari/604.1,
=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1 Safari/605.1.15,

我正在尝试获取第一个括号内的字符串:

我尝试了 | parse @ip /(?<@device>(/\((.*?)\)/)/ 但它不起作用。

有什么办法让它发挥作用吗?

谢谢!

查看给定模式的结果,您可以使用另一个命名的捕获组(而不是环视,您也可以匹配文本):

User-Agent=[^()]*\((?<@device>[^()]*)\).*X-Forwarded-Proto

看到一个regex demo

两个捕获组:

User-Agent(?<@ip>[^()]*\((?<@device>[^()]*)\).*X-Forwarded-Proto)

再看一个regex demo