使用regex解析tcpdump输出时遇到问题
特别是,我正在尝试获取HTTP请求数据包的HTTP头的“主机:…”部分 一个例子是这样的: .2~:Ka3使用regex解析tcpdump输出时遇到问题,regex,networking,tcpdump,Regex,Networking,Tcpdump,特别是,我正在尝试获取HTTP请求数据包的HTTP头的“主机:…”部分 一个例子是这样的: .2~:Ka3.E..D'.@..M..J}.E..p..q..W..g.o3GET./.HTTP/1.1..2~:Ka3.E..g'.@..I..J}.E..p..W..g..host:.domain.com 另一个原因是: .2~:Ka3.E..D'.@..M..J}.E..p..q..W..g.o3GET./.HTTP/1.1..2~:Ka3.E..g'.@..I..J}.E..p..W..g..h
.E..D'.@..M..J}.E..p..q..W..g.o3GET./.HTTP/1.1..2~:Ka3
.E..g'.@..I..J}.E..p..W..g..host:.domain.com
另一个原因是:
.2~:Ka3.E..D'.@..M..J}.E..p..q..W..g.o3GET./.HTTP/1.1..2~:Ka3
.E..g'.@..I..J}.E..p..W..g..host:.domain.com..Connection:
注意,这是ascii输出。我想提取那个主机。我最初的正则表达式是:
[hH]ost:\.(.*)..
这适用于第一种情况,但不适用于第二种情况。特别是,对于第二个,它将提取:“domain.com..Connection.Keep Alive..”
如果您能帮助我创建一个在所有情况下都能工作的通用正则表达式,我将不胜感激。请使用以下命令:
(?<=host:\.)(?:\.?[^.])+
(?供参考添加了演示、解释和参考。:)是否有办法将组(0)设置为“domain.com”而不是主机:.domain.com,这样我就不必重复regex?完成(请参阅修订的regex和演示)。请让我知道这是否适合您。:)@zx81为什么我们需要一个消极的前瞻只是(?@AvinashRaj是的,这是另一个选项。为什么是一个而不是另一个?我写这篇文章时就这么说了。写同样的东西总有10种方法。:)