下面的网址的正则表达式模式

时间:2015-08-24 06:09:56

标签: regex logstash-grok

有人可以为下面的示例网址提供正则表达式吗?

https://test.example.com/new/index.html?token=0A44AD94

如果有可能拆分该字段,那么我可以轻松填充这些值以监控每个用户活动。

1 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式将这些类型的网址与可选的第三方组件匹配,并且params 始终遵循固定顺序:

https?://(?<domain>[^/]*).*\btoken=(?<token>[^&]*).*\bvalue=(?<value>[^&]*)(?:.‌​*\bexit=(?<thirdparty>[^&]*))?
                                                                            ^^                             ^^

请注意,[^/]*匹配/以外的0个或多个字符,[^&]*匹配除&以外的0个或更多个字符(这在匹配参数中的参数值时很有用查询字符串,以免超匹配)。 (?:...)?是一个可选的非捕获组,可以存在与否,但正则表达式仍然会成功。

<强>更新

在检查了几件事后,我认为这个正则表达式适合你:

%{IPORHOST:clientip} (%{USER:ident}|-) (%{USER:auth}|-) \[%{HTTPDATE:timestamp}\] (?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-) "%{URIPROTO}://(?<domain>[^/]*).*[&?]token=(?<token>[^&]*).*[&?]value=(?<value>[‌​^&]*)(?:.*[&?]exit=(?<thirdparty>[^"&]*))?"(?:\s*%{QS:agent})?

出于某种原因,{QS:agent}已包含双引号。