前提・実現したいこと
特定の場所に存在する、(特定の文字列を含まない、その特定の文字列以外の任意の文字列)にパタンマッチしたい
発生している問題
マッチさせたいものは、特定の拡張子以外の以下のようなログ。
※Javaベースのログ管理ツールで、ワンライナーで一発マッチさせないといけないので、1行ずつ変数につっこんで、条件分岐何回かする、みたいな素朴な解決策が採用できないのです…
マッチさせたい文字列
log
1- - [20/Nov/2021:20:26:53 +0900] "GET /hogehoge/fugafuga.html HTTP/1.1" 200 84550 "https://foobar/foo/bar.html?" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"
試した正規表現
RegExp
1"(GET|POST)\s+(?[^\s"]*(jpg|svg|tiff))\s+"\s+200
試したこと
特定の文字列(拡張子)を除外することと、特定の拡張子(htmlとか)だけにマッチさせるだけだった場合はできるが、試した正規表現のように、指定した拡張子以外のすべての拡張子にマッチさせることの解決策が調べた範囲では見つからなかった。
補足情報(FW/ツールのバージョンなど)
javaはopenjdk 11.0.10
内部的に使用しているのはJava.util.regexpのようです。
記述がわかりません。
> 特定の文字列を除外することだけだった場合はできる
ということですが、それができるのであれば、
> それ以外のすべての拡張子にマッチさせること
は出来ると思うのですが、どこか日本語の記述が間違ってませんか?
「拡張子がこれこれの場合の除外」と「拡張子がこれこれ以外にマッチ」は同じに見えます。
全然違うことを言っているのであれば、もう少し説明してください。
結局のところ、どういう入力に対して、どういう出力が得たいのか質問文からは不明です。
試したことをもうすこし書き改めました
特定の文字列(拡張子)を除外することと、特定の拡張子(htmlとか)だけにマッチさせるだけだった場合はできるが、試した正規表現のように、指定した拡張子以外のすべての拡張子にマッチさせることの解決策が調べた範囲では見つからなかった。
コメントした内容がわからないと言うことですかね。うーむ。
下記の文章の意味がわかりますか?
> 「拡張子がこれこれの場合の除外」と「拡張子がこれこれ以外にマッチ」は同じに見えます。