Tomcat サーバーで要求を行うすべてのユーザー名に一致する正規表現を作成しようとしています。ログからの行のサンプル:
192.10.123.45 - ドメイン/ユーザー名 [2012 年 7 月 30 日: 07:29:13 -0400] "GET /APP/ HTTP/1.1" 200 53167
問題は、 username にいくつかの異なる形式があることです:
- ユーザー名
- ドメイン\ユーザー名
- ドメイン/ユーザー名
現在の試み:
if(($line -match “GET”) -AND ($line -match "(\s-\s\w{1,})")) {
$temp = $matches[0]
if(($line -match “GET”) -AND ($line -match "(\s-\s\w{1,}\S)?=[\\\/](w{1,}\b)")) {
$temp1 = $matches[0]
Write-host $temp
}
ユーザー名の前にスペース-スペースを開始点として使用していますが、うまく機能しているようです。現時点で関心のある唯一の PHP 呼び出しであるため、行に「GET」が含まれているかどうかを常に確認します。最初の単語は常に 1 つの単語に一致するため、2 つの一致があります。2 番目の単語が一致する場合は、ドメインを気にしないため、$temp を使用して $temp1 をトリミングします。私が本当に困っているのは、正規表現で「バックスラッシュまたはフォワードスラッシュ」を言う方法です。
また、私の正規表現が、ユーザー名に数字が含まれる場合やドメインにダッシュが含まれる場合を処理するかどうかもわかりません。これは \w によって検出されると想定していますが、テスト中の開発ではこれらのケースを見つけることができません。
正規表現の知識が不足していることを事前にお詫び申し上げます。