1

例:

[Fri Oct 18 17:39:11 2013] [error] [client x.x.x.x] client denied by server configuration: /home/client/client.com.br/app/etc/local.xml
[Fri Oct 18 17:39:38 2013] [error] [client x.x.x.x] client denied by server configuration: /home/client/client.com.br/app/etc/local.xml
[Fri Oct 18 17:39:44 2013] [error] [client x.x.x.x] client denied by server configuration: /home/client/mariapiacasa.com.br/app/etc/local.xml
[Fri Oct 18 17:42:41 2013] [error] [client x.x.x.x] client denied by server configuration: /home/client/client.com.br/app/etc/local.xml
[Fri Oct 18 17:47:33 2013] [error] [client x.x.x.x] client denied by server configuration: /home/client/client.com.br/app/etc/local.xml
[Fri Oct 18 17:47:49 2013] [error] [client x.x.x.x] client denied by server configuration: /home/client/client.com.br/app/etc/local.xml
[Fri Oct 18 17:47:58 2013] [error] [client x.x.x.x] client denied by server configuration: /home/client/client.com.br/app/etc/local.xml
[Fri Oct 18 17:50:02 2013] [error] [client x.x.x.x] client denied by server configuration: /home/client/client.com.br/app/etc/local.xml
[Fri Oct 18 17:59:37 2013] [error] [client x.x.x.x] client denied by server configuration: /home/client/client.com.br/app/etc/local.xml
[Fri Oct 18 19:05:34 2013] [error] [client x.x.x.x] File does not exist: /home/client/client.com.br/skin/frontend/default/MAG080138

この例では、メッセージ クライアントがサーバー構成によって拒否された行を監視したくありません: /home/client/client.com.br/app/etc/local.xml。他のすべてを監視する必要があります。次の正規表現を使用して、表示したくないものを見つける方法を知っています。

.*client denied by server configuration:.*\/app\/etc\/local\.xml$

上記の例では、次の行のみを監視する必要があります。

[Fri Oct 18 19:05:34 2013] [error] [client x.x.x.x] File does not exist: /home/client/client.com.br/skin/frontend/default/MAG080138
4

1 に答える 1

0

正規表現では、 を使用して否定的な先読みを使用して(?!<regexpression>)、他の何かが続いていない場合にのみ、何かに一致させることができます。

したがって、式を含まない任意の行に一致させるには、次のようにします。

client denied by server configuration:.*\/app\/etc\/local\.xml

否定先読みは次のように使用できます。

 ^(?:.(?!client denied by server configuration:.*\/app\/etc\/local\.xml))*$
   ^ non capture group
     ^ any character
      ^not followed by 
         ^ your regex

(実際に見てください

ただし、この正規表現ははるかに優れたパフォーマンスを発揮します。

^.* \[client x.x.x.x\] (?!client denied by server configuration:.*\/app\/etc\/local\.xml).*$

(実際に見てください

否定先読みは、文字が一致するたびに実行されるのではなく、一度だけ実行されるためです。

お役に立てれば。

幸運を!

于 2013-10-19T11:30:33.537 に答える