Googleアナリティクスでいくつかの目標を設定しており、少し正規表現のヘルプを使用できます。
4つのURLがあるとします
http://www.anydotcom.com/test/search.cfm?metric=blah&selector=size&value=1
http://www.anydotcom.com/test/search.cfm?metric=blah2&selector=style&value=1
http://www.anydotcom.com/test/search.cfm?metric=blah3&selector=size&value=1
http://www.anydotcom.com/test/details.cfm?metric=blah&selector=size&value=1
文字列selector = sizeを含むがdetails.cfmを含まないURLを識別する式を作成したい
別の文字列を含まない文字列を見つけるには、次の式を使用できます。
(^((?!details.cfm).)*$)
しかし、selector = sizeの部分を追加する方法がわかりません。
どんな助けも大歓迎です!
これはそれを行う必要があります:
^(?!.*details\.cfm).*selector=size.*$
^.*selector=size.*$
十分に明確にする必要があります。最初のビット、(?!.*details.cfm)
は負の先読みです。文字列を照合する前に、文字列に「details.cfm」が含まれていないことを確認します(その前に任意の数の文字があります)。
正規表現(Perl構文):
`/^[(^(?!.*details\.cfm).*selector=size.*)|(selector=size.*^(?!.*details\.cfm).*)]$/`
^(?=.*selector=size)(?:(?!details\.cfm).)+$
正規表現エンジンがポーズをとる数量詞をサポートしている場合(Googleアナリティクスはサポートしていないと思われますが)、これは大きな入力セットに対してより良いパフォーマンスを発揮すると思います:
^[^?]*+(?<!details\.cfm).*?selector=size.*$
OPとKobiのソリューションがうまく機能するのと同様の状況で、テールでラインバッファリングを回避する方法を探していました。私の場合、「/」(ルートドキュメント用)を含めながら、「bot」または「spider」のいずれかの行を除外します。
私の元のコマンド:
tail -f mylogfile | grep --line-buffered -v 'bot\|spider' | grep ' / '
( "-P" Perlスイッチを使用)になります:
tail -f mylogfile | grep -P '^(?!.*(bot|spider)).*\s\/\s.*$'