正则表达式 - 字符串第一个括号内的字符串
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,
我正在尝试获取第一个括号内的字符串:
- iPhone; CPU iPhone OS 15_1 喜欢 Mac OS X
- Macintosh;英特尔 Mac OS X 10_15_7
我尝试了 | parse @ip /(?<@device>(/\((.*?)\)/)/
但它不起作用。
有什么办法让它发挥作用吗?
谢谢!
查看给定模式的结果,您可以使用另一个命名的捕获组(而不是环视,您也可以匹配文本):
User-Agent=[^()]*\((?<@device>[^()]*)\).*X-Forwarded-Proto
看到一个regex demo。
两个捕获组:
User-Agent(?<@ip>[^()]*\((?<@device>[^()]*)\).*X-Forwarded-Proto)
再看一个regex demo。
我正在尝试使用 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,
我正在尝试获取第一个括号内的字符串:
- iPhone; CPU iPhone OS 15_1 喜欢 Mac OS X
- Macintosh;英特尔 Mac OS X 10_15_7
我尝试了 | parse @ip /(?<@device>(/\((.*?)\)/)/
有什么办法让它发挥作用吗?
谢谢!
查看给定模式的结果,您可以使用另一个命名的捕获组(而不是环视,您也可以匹配文本):
User-Agent=[^()]*\((?<@device>[^()]*)\).*X-Forwarded-Proto
看到一个regex demo。
两个捕获组:
User-Agent(?<@ip>[^()]*\((?<@device>[^()]*)\).*X-Forwarded-Proto)
再看一个regex demo。