正则表达式从citrix日志中捕获useragent

时间:2017-12-08 12:27:51

标签: regex citrix

需要帮助从Citrix日志中捕获用户代理详细信息。 Citrix的日志格式与成功和拒绝完全不同。样品如下:

对于成功验证,用户代理详细信息包含在“”中。详细信息位于关键字Browser_type“”

之后

对于拒绝流量,“”中不存在使用者详细信息。它出现在关键字Browser

之后

拒绝

  

Dec 8 05:20:53 netscaler02 12/08/2017:05:20:53 netscaler02 0-PPE-0:AAA LOGIN_FAILED -adasd92 0:用户renju - Client_ip XXXX - Failure_reason“外部认证服务器拒绝访问” - 浏览器Mozilla / 5.0(Windows NT 6.1)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 60.0.3112.113 Safari / 537.36

成功

  

Dec 8 05:54:06 netscaler02 12/08/2017:11:54:06 GMT netscaler02 0-PPE-0:SSLVPN LOGIN -78342434122 0:上下文renjus@1X.XXX - SessionId:xxx-用户renju - Client_ip XXXX - Nat_ip“Mapped Ip” - Vserver XXXX:443 - Browser_type“Mozilla / 5.0(Windows NT 6.1; Win64; x64)AppleWebKit / 537.36(KHTML,类似Gecko)Chrome / 56.0.2924.87 Safari / 537.36” - SSLVPN_asdasdat_type ICA - 小组“N / A”

我有一个正则表达式来捕获“”

中的浏览器代理
  

(P(小于= Browser_type \ S \ “)的(= \ S (:???\ W + = | \”?)))“

Bud需要一个正则表达式来捕获所有格式的用户代理。

提前致谢。

2 个答案:

答案 0 :(得分:0)

也许您可以像这样匹配您的日志:

Browser(?:_type)?\s"?(.+|[^"]+)

  • 将浏览器与可选的_type "?
  • 匹配
  • 后跟可选的双引号\s
  • 后跟空格(
  • 然后在.*组中捕获任何字符零次或多次|
  • [^"]+
  • 直到您遇到双引号)
  • 关闭论坛__iter__

修改

捕获“浏览器”而不在命名捕获组中使用可选的“_type”:

(?P<citrix_useragent>Browser)(?:_type)?\s"?(.+|[^"]+)

答案 1 :(得分:0)

第四只鸟获得了最初的推动并做了一些努力。

  

Browser((?:_type)?\s\"*)(?P(.+\"-|[^\"]+))