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場合にのみ、基本的に一致していません(問題ありません)。neighbortype=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 に答える