1
注::私は正規表現がこの場合にどのように動作するかについてのクエリを持っています。 これは練習に関連していますが、宿題の助けにはなりません!私が言及していない解決策ファイルを得たからです。正規表現フィルタクエリ| Google LogPuzzleExercise
私はlog readingのこのエクササイズに取り組んでいます。基本的にApacheログを読み込んで、ログインした画像ファイルをダウンロードします。
行1:
10.254.254.28 - - [06/Aug/2007:00:12:20 -0700] "GET /keyser/22300/ HTTP/1.0" 302 528 "-" "Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4"
ライン2:
10.254.254.58 - - [06/Aug/2007:00:10:05 -0700] "GET /edu/languages/google-python-class/images/puzzle/a-baaa.jpg HTTP/1.0" 200 2309 "-" "googlebot-mscrawl-moma (enterprise; bar-XYZ; [email protected],[email protected],[email protected],[email protected])"
だから、最初私はちょうどすべての
は私に、文字列の部分
を取得GETを識別するシンプルに正規表現を書きましたpattern = r"GET\s(.+)\b\s"
match_list = re.findall(pattern, log)
if match_list:
print(match_list[0])
これは
/keyser/22300/ HTTP/1.0" 302 528 "-" "Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.4) Gecko/20070515
私はpattern = r"GET\s(.+)\b\sHTTP
にパターンを微調整すると、それは今LINE1で何とか無視し、私はどのように知らないさ
/edu/languages/google-python-class/images/puzzle/a-baaa.jpg
を出力を出力します。誰も私が何を正規表現エラーが私を説明することができますか?
は、それはあなたがのためにバックスラッシュをエスケープ場合は、期待通りに動作します'\ b'それは' GET \ s(。+)\\ b \ sHTTP'ですか? –
それを試してみましたが、文字列を生のままにしていましたので、必要ではないと感じました。 –
Qで述べたように、HTTPで2番目の行が表示されますが、なぜ最初の行は検索されませんか? –