2

これを自分で解決しようとしましたが、助けが必要です。

syslog に強力なものがあります。grep の方が簡単であることはわかっていますが、正規表現を作成する理由があります。

例えば: somerandomstufffilter-category=Web_Advertisements|andhereis more random stuff

その文字化けした混乱の中に、正確な文字列があります'filter-category=Web_Advertisements|'

この正規表現を作成しました: (filter-category=).*?(?=["|"])

これは、必要な正確な文字列をパイプまで引っ張ります。文字列全体を提供する代わりに、等号の後のすべて (および一致に含めないでください) とパイプの前のすべてが必要です。

今、私は手に入れています: 'filter-category=Web_Advertisements' 私が手に入れたい 'Web_Advertisements'のは: それだけです. 秘訣は、フィルター カテゴリに続くものは、Web 広告だけでなく、何でもかまいません。そのため、最初に遭遇したパイプで終了する必要があります。

4

2 に答える 2

2
  1. キャプチャする必要はないfilter-category=ので、をドロップし()ます。
  2. ここで先読みを使用する必要はないので、を削除し(?=...)ます。
  3. ちなみに、あなたは書くことによって文字クラスを誤用していました—それはあなたが二重引用符かパイプ["|"]のどちらかに一致することを意味するでしょう。"|

これがあなたが望むものです:

filter-category=(.*?)\|
于 2013-01-02T16:14:09.087 に答える
0

acheong87 の回答には、キャプチャにパイプが含まれる可能性があります...貪欲で複数のパイプがある場合、最後のパイプまですべてをキャプチャします。

試す

filter-category=([^\|]*)\|

acheong87の答えのように、これは全体に一致します

filter-category=Web_Advertisements|

そこから、保持したい部分を抽出する必要があり、$1 にキャプチャされます

于 2013-01-02T16:17:05.367 に答える