すべてを扱うPython RegExp一致する文字列から値を取得
私はログを解析するのに些細な問題に直面しました。
ファイルを調べて、その行がパターンと一致するかどうかを確認する必要があります。 YESの場合、この行にClientIDを指定します。
:だから私は、私は正規表現検索パターンを構築しようとしたが、それは 'TRACE' でcomplete..stuckされていない99071901.を取得する必要があります
17.02.09 10:42:31.242 TRACE [1245] GDS: someText(SomeText).ClientID: '' -> '99071901'
:
ラインは次のようになります
regex = '(^[(\d\.)]+) ([(\d\:)]+) ([\bTRACE\b]+) ([(\d)]+) ([\bGDS\b:)]+) ([\ClientID\b])'
スクリプトコードです:
log=open('t.log','r')
for i in log:
key=re.search(regex,i)
print(key.group()) #print string matching
for g in key:
client_id=re.seach(????,g) # find ClientIt
log.close()
あなたはこの挑戦を解決するためのヒントを教えていただければ幸いです。
ありがとうございます。
これらの数字が必要な場合は、 'r ''(\ d +) '$" '正規表現と' .group(1) 'を取り出すだけでよいと思います。 \ s +([\ d。:] +)\ s +(TRACE)\ s + \ [(\)]のようにパターンを " GDS:。*?ClientID:\ s * '' \ s * - > \ s * '(\ d +)' $ '](https://regex101.com/r/XVRXSx/1)適切なインデックスを使用して必要なグループ –
こんにちは@WiktorStribiżew、あなたのパターンをループで適用する場合:regex = "^([\ d。] +)\ s +([\ d.:]+)\s+(TRACE)\s+\[(\d+)] GDS:。*?ClientID:\ s * '' \ s * - > \ s * '(\ d +)' $ ";私はログに:key = re.search(regex、i);キーがNoneでない場合:ClientID = key.group(1); print(ClientID); else:print( 'not matching')。私はなし、一致していない – AlexPes
なぜループですか?いいえ、 'm = re.search(pat、s)'、 'if m:print(m.group(n))'を使います。 'n'はグループIDです。 [The Python demo](https://ideone.com/B74GUk)を参照してください。 –