1
10.177.116.76 - U031503@nttdata [11/Mar/2013:09:42:44 +0900] "GET /infovia/ga/ga004rp0002.action HTTP/1.1" 302 301 "https://tb-infovia.groupwide.net/infovia/ga/ga013rp0004.action?messageId=errors.Authentication.001" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET CLR 1.1.4322)"

上記がアクセスログの行です。2 つのアクション ID があります。正規表現パターンを使用して、HTTP の前に最初のアクション ID を抽出したいと考えています。今、私はこのパターンを使用しています([^/\"]*).action。どこでも行内の両方のアクション ID に一致しました。2日前にこの問題をテストしていました。手伝っていただけませんか?

4

4 に答える 4

0

あなたの質問を正しく理解できれば、問題は文字列に 2 つの「アクション ID」があり、両方を取得したいということです。ただし、両方に一致する現在の正規表現では、この正規表現の評価方法によっては、最初の一致しか得られない場合があります。したがって、1 つの一致で両方を抽出するには、正規表現を繰り返してから、キャプチャする部分の間のすべてを消費する必要があります。

([^/\"]*).action.*([^/\"]*).action

これは regexで、途中で([^/\"]*).action2 回繰り返され、何回.*でも何にでも一致します。その後、キャプチャ グループ 1 と 2 で両方のアクションを使用できます。

于 2013-05-27T02:39:27.897 に答える