我有一个日志文件,其日志与Apache日志非常相似
以下是日志行示例
41.13.0.155 - - [03/May/2012:00:00:08 -0700] "GET /gameState?type=udid&udid=A100001837E58D4&game=TapFish HTTP/1.1" 200 38812 - "Dalvik/1.4.0 (Linux; U; Android 2.3.5; GT-B5510 Build/GINGERBREAD)"
我可以将此字符串与日志行"GET /gameState?type=udid&udid=A100001837E58D4&game=TapFish HTTP/1.1"
我想迭代所有行以获取满足以下条件的所有日志行
日志行应该有"GET /gameState?type=[[anything]]"
,但[[anything]]不应该是'neighbor'
请建议一些正则表达式,它可以匹配上述条件下的字符串
答案 0 :(得分:3)
您可以使用negative lookahead来匹配不包含子字符串的行:
.+GET /gameState\?type=(?!neighbor).+
答案 1 :(得分:1)
我不确定我是否理解了所有约束,但这应该有效:
.+GET /gameState(?!.*type=neighbor\b).*
如果它type=neighbor
之后的任何地方发现gameState
,并且仅当neighbor
位于字边界(type=neighborhood
正常)时,您基本上不匹配。
答案 2 :(得分:0)
使用否定前瞻来排除邻居:
for line in logfile:
match = re.search("GET /gameState?type=(?!neighbor)", line")