2016-11-10 6 views
1

ログを整理しようとしていて、メッセージから一般情報を抽出したい。私はPythonにnewieして、昨日の正規表現を学ぶだけで、今問題があります。正規表現のPythonを使用して2文字間の文字列を削除する方法

私のメッセージは、次のようになります。

Report ZSIM_RANDOM_DURATION_ started 
Report ZSIM_SYSTEM_ACTIVITY started 
Report /BDL/TASK_SCHEDULER started 
Report ZSIM_JOB_CREATE started 
Report RSBTCRTE started 
Report SAPMSSY started 
Report RSRZLLG_ACTUAL started 
Report RSRZLLG started 
Report RGWMON_SEND_NILIST started 

私はいくつかのコードを試してみてください。

clean_special2=re.sub(r'^[Report] [^1-9] [started]','',text) 

が、私は、私は報告書のような形式を維持したいが、このコードはすべての行を削除すると思います。.. ...開始しました。だから、私はちょうど真ん中の仕事の名前を削除したい。

私は私の結果は次のようになります期待:

Report started 

誰もがアイデアで私を助けることができますか?どうもありがとうございました!

+0

わかりません。あなたがこれを記述する方法では、それぞれが 'Report started'を含む同じ数の行で新しいファイルを書くことができませんでしたか?あなたは正規表現が必要な理由を何もしていません。 – sobek

+0

申し訳ありませんが、私はそれを明確にしていないと思います。 「ログオンに成功しました」、「RFC/CPICログオンに成功しました」などのメッセージもありますので、私はクリーンアップしたいメッセージのみを表示します。 –

答えて

2

このような何か試してみてください:

clean_special2=re.sub(r'(?<=^Report\b).*(?=\bstarted)',' ',text) 

説明:(?<=...)が肯定後読みで、例えばを文字列はこのグループの内容と一致する必要がありますが、キャプチャされず、したがって置換されません。反対側のポジティブなルックアヘッドの同じこと(?=...)\bは単語境界であり、これらの単語間のすべてが一致するようになっています。空白を取り除くので、置き換えは空白になります。

+0

OPのコメントを参照してください、これは一般的ではないと思います。 – sobek

+0

@sobek私はこのコメントを読んでいますが、一般的だと思います。レポートジョブを削除するだけですが、各メッセージに適用すると他のメッセージには触れません。 – Lucero

+0

ご協力いただきありがとうございます!私の場合の仕事です。しかし、私はまだ混乱していると思う:1。 ^(〜<= ^レポート\ b)のために使うものと同じですか?パターンマッチングの初期位置を示すことを意味しますか?ありがとうございました! –

1

私はPythonの構文を知らないが、私はこの正規表現は、あなたがあなたの文字列に一致助けることができることを確認することができます

/^レポート\ W +([\ & W#@%^〜。! - ] +)\ W + /メートルを開始しました*

Pythonの文字列は、この
テキストのようなものかもしれません= "レポートZSIM_RANDOM_DURATION_が開始さ"。 ( '[&ワット\#@%^〜。! - ] ^レポート\ W +(+)\ W +が始まっR'、」」、テキスト)

clean_special2 = re.sub *

1

これはすべきです... '^レポート\ [^ \] * \開始'

正規表現は黒い魔法です。オンラインツールを使用すると、書きやすくなります。https://regex101.com/

+0

ご協力いただきありがとうございます、このサイトを教えてください! –

+0

@zihanmengこれを再読します。私はあなたの質問を正しく理解しているかどうかまだ分かりません。あなたが言及した「他のメッセージ」はどこにありますか?彼ら自身の行で?または同じ文字列内のどこかにありますか?保存する必要があるこれらの「その他のメッセージ」を含む例が役に立ちます。 – technicalbloke

+0

@technicalbloke正規表現はまったく黒色の魔法ではありません...それは、適切な場所、つまりテキスト上のほとんどの些細なパターンマッチング作業で使うべき強力なツールです。 – Lucero

関連する問題