特定の脆弱性スキャンに関連する特定のエントリを Apache ログ ファイルで検索しようとしています。別のファイルの文字列をウェブログの URI コンテンツと照合する必要があります。検索しようとしている文字列の一部に、「?」などの特殊文字の繰り返しが含まれています。
たとえば、文字列「????????」のみを含む攻撃に一致できる必要があります。しかし、文字列 '??????????????????' でアラートを受け取りたくありません。各攻撃は特定の攻撃 ID 番号に関連付けられているためです。したがって、次を使用します。
if attack_string in log_file_line:
alert_me()
...動作しないでしょう。このため、文字列を正規表現に入れることにしました。
if re.findall(r'\%s' % re.escape(attack_string),log_file_line):
alert_me()
...文字列「????????」を含むログファイル行があるため、どちらも機能しませんでした '?'が8個以上あってもマッチします。ログファイルの行に。
次に、正規表現に境界を追加してみました:
if re.findall(r'\\B\%s\\B' % re.escape(attack_string),log_file_line):
alert_me()
...どちらの場合も一致しなくなりました。探している文字列を動的に割り当てる必要がありますが、文字列を含む行だけで一致させたくありません。どうすればこれを達成できますか?