使用正则表达式解析tcpdump输出时遇到问题

时间:2014-06-23 00:49:05

标签: regex networking tcpdump

特别是,我正在尝试获取HTTP请求数据包的HTTP标头的“Host:...”部分。

一个例子是这样的:

$ .. 2〜:。。KA3 ..E..D'.@.@..M....J}.e...P...q...W................g.o3GET./.HTTP/1.1...$..2~.:Ka3 .. E..G” @ ..我....Ĵ} .E。P ....... W¯¯................克.. \主机:.domain.com ..

另一个是:

$ .. 2〜:。。KA3 ..E..D'.@.@..M....J}.e...P...q...W................g.o3GET./.HTTP/1.1...$..2~.:Ka3 .. E..G” @ ..我....Ĵ} .E。P ....... W¯¯................克.. \主机:.domain.com..Connection:.Keep-活....

注意这是ascii输出。我想提取那个主机。我最初的正则表达式是:

[hH]ost:\.(.*)..

这适用于第一种情况,但不适用于第二种情况。特别是,对于第二个,它将提取:“domain.com..Connection.Keep-Alive ..”

对于创建适用于所有情况的通用正则表达式,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用此:

(?<=host:\.)(?:\.?[^.])+

请参阅demo

  • lookbehind (?<=host:\.)声称前面的内容是host:.
  • (?:\.?[^.])匹配一个可选的句点,然后匹配一个不是句号的字符。
  • +让我们匹配一个或多个这些角色

<强>参考