0

我有一个日志文件,其中的日志与 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'

请建议一些可以在上述条件下匹配字符串的正则表达式

4

3 回答 3

3

您可以使用否定前瞻来匹配不包含子字符串的行:

.+GET /gameState\?type=(?!neighbor).+
于 2012-05-03T15:22:31.530 回答
1

我不确定我是否了解您的所有限制,但这应该可行:

.+GET /gameState(?!.*type=neighbor\b).*

type=neighbor如果它出现在 之后的任何地方gameState,并且只有neighbor在单词边界处(没问题),你基本上不匹配type=neighborhood

于 2012-05-03T17:37:14.497 回答
0

使用负前瞻排除邻居:

for line in logfile:
    match = re.search("GET /gameState?type=(?!neighbor)", line")
于 2012-05-03T15:22:08.350 回答