下面是DNS样本日志,我需要编写一个正则表达式来捕获主机名“ Renju123 ”。两种样本的日志格式结构几乎没有什么不同。
日志示例如下:
“ 2018-12-12 13:25:30”,“ Renju,Jacob,M(renjutest)”,“ Renju,Jacob,M(rtest),Renju123,默认站点,测试/防火墙”,“ 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,默认站点,Renju Renju / Renju”,“ 10.250.33.85”,“ XXX.XXX.XXX.XXX”,“允许“,” 12(PTR)“,” NOERROR“,” 1XX.1X.1XX.1XX.Test.com。“,”软件/技术“
我使用的正则表达式仅捕获第一个日志主机名
(?P(?<=),)。*?(?= ,.?默认))link here
但是我想有一个正则表达式来从两个示例日志中捕获主机名(Renju123)
答案 0 :(得分:1)
您可能要做的(根据注释)是使用[",]+
匹配双引号或逗号1+次,然后捕获匹配1+个单词字符的组。然后,Default
跟随着您,以便您可以再次进行匹配:
您的比赛将在HostName
组中。
[",]+(?P<HostName>\w+),Default
如果主机名以单词字符开头,则可以使用环视和单词边界\b
(?<=[,"])\b(?P<HostName>\w+)(?=,Default)