-1

下面是我需要编写正则表达式来捕获主机名“ Renju123 ”的 DNS 示例日志。两个样本的日志格式结构几乎没有什么不同。

日志示例如下:

"2018-12-12 13:25:30","Renju, Jacob,M(renjutest)","Renju, Jacob, M (rtest),Renju123,Default Site,Test/firewall","10.221.5.136", "XXX.XXX.XXX.XXX","允许","16 (A)","NOERROR","1XX.1X.1XX.1XX.Test.com.","计算机安全"

"2018-12-12 13:09:55","rtest","Renju123,Default Site,Renju Renju/Renju","10.250.33.85","XXX.XXX.XXX.XXX","允许"," 12 (PTR)","NOERROR","1XX.1X.1XX.1XX.Test.com.","软件/技术"

我使用的正则表达式仅捕获第一个日志主机名

(?P(?<=),).*?(?=,.?Default))链接在这里

但我想要一个正则表达式从两个示例日志中捕获主机名(Renju123)

4

1 回答 1

1

您可能会做的(根据评论)是使用匹配双引号或逗号 1+ 次[",]+,然后在匹配 1+ 个单词字符的组中捕获。然后,Default跟随,以便您可以再次匹配:

您的比赛将在HostName小组中。

[",]+(?P<HostName>\w+),Default

正则表达式演示

如果您的主机名以单词字符开头,则可以使用环视和单词边界\b

(?<=[,"])\b(?P<HostName>\w+)(?=,Default)

正则表达式演示

于 2018-12-12T14:35:05.803 回答