Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用regex解析tcpdump输出时遇到问题_Regex_Networking_Tcpdump - Fatal编程技术网

使用regex解析tcpdump输出时遇到问题

使用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

特别是,我正在尝试获取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..host:.domain.com..Connection:

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

[hH]ost:\.(.*)..
这适用于第一种情况,但不适用于第二种情况。特别是,对于第二个,它将提取:“domain.com..Connection.Keep Alive..”

如果您能帮助我创建一个在所有情况下都能工作的通用正则表达式,我将不胜感激。

请使用以下命令:

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

(?供参考添加了演示、解释和参考。:)是否有办法将组(0)设置为“domain.com”而不是主机:.domain.com,这样我就不必重复regex?完成(请参阅修订的regex和演示)。请让我知道这是否适合您。:)@zx81为什么我们需要一个消极的前瞻只是
(?@AvinashRaj是的,这是另一个选项。为什么是一个而不是另一个?我写这篇文章时就这么说了。写同样的东西总有10种方法。:)