2017-01-16 5 views
0

私はregexに非常に新しいです。私は、そのログメッセージのより短いサブセットにログを解析するために作成する必要があります。regexを使ってログのサブセットを取得する....どのようにアプローチするのですか?

たとえば、私がログを持っている:

System trap received SystemString=Mon Jan 07 15:36:07 2017. System 1464333684: Type: Timing Quality le-5 System, Class: Timing, Level: None, Action: Clear System, Flags: 0x15 

そして、私が解析し、そこから取得したいと思います:

Timing Quality le-5 System, Class: Timing 

は、最初に、これは私には本当に些細に見えたが、多くのを見た後、正規表現のチュートリアル...私はそのようなタスクにアプローチする方法を混乱させる。私はどこから始めるのですか?

ありがとうございます。

+0

どのプログラミング言語ですか? – MYGz

+0

@MYGz私はそれらの細部を知らない...私はちょうどログを与えられている。解析はネットワーク機器で行われ、正規表現の ' – noob

+0

@noob'が出てくることは非常に曖昧な質問です。 – MYGz

答えて

0

あなたの文字列が、私はどうなるsである場合:

g = re.search('Timing Q.*?Class.*?(?:,)', s) 
print(g.group(0)) 

私が最初Q続いTimingを検索し、私はクラスを満たし、次のカンマまでまで非貪欲的(.*?)ですべての文字に進みます。 カンマをキャプチャしないでください。カンマをキャプチャしない括弧内に指定してください。(?:,)

+0

こんにちは、repsonseのおかげで...これは私が与えた特定のログのために動作します。しかしタイプはタイミング品質と異なるかもしれません。だから私は '(?:Type)。*?Class。*?(?:、)'に変更しました。しかし、私が[regex101](https://regex101.com)でこれをテストすると、最後にテキストのタイプとカンマが表示され、キャプチャされていませんか? – noob

+0

あなたは正しいです、正規表現101でそれをテストしました。それは何らかの理由で、非捕捉括弧を含む完全一致を与えます。しかし、Pythonで正しく動作します –

+0

これは助けになりました。どうもありがとう! – noob

関連する問題