regex に基づいてログファイルで一致する行を見つけようとしています。次に、その中のグループをチェックし、予想される行と実際の行を報告します。次の例は、私がやろうとしていることを正確に示しています。
regex_str = '^.*name is (?P<name>[^.]*).*lives? in (?P<place>[^.]*).*$'
statement = 'My name is bala. I live in mumbai.'
statement2 = 'His name is bala. He lives in mumbai.'
ret = find_line([statement,'Garbage'],regex_str,name='bala',place='chennai')
ret == {
'Expected' : 'My name is bala. I live in chennai.'
'Actual' : 'My name is bala. I live in mumbai.'
'isMatched': False
}
ret = find_line([statement2,'Garbage'],regex_str,name='bala',place='chennai')
ret == {
'Expected' : 'His name is bala. He lives in chennai.'
'Actual' : 'His name is bala. He lives in mumbai.'
'isMatched': False
}
ret = find_line(['Garbage1','Garbage2'],regex_str,name='bala',place='chennai')
ret == {
'Expected' : '^.*name is (?P<name>[^.]*).*lives? in (?P<place>[^.]*).*$'
'Actual' : '<No matching line>'
'isMatched': False
}
ret = find_line(['Garbage1',statement,'Garbage2',statement2],regex_str,name='bala',place='mumbai')
ret == {
'Expected' : 'My name is bala. I live in mumbai.'
'Actual' : 'My name is bala. I live in mumbai.'
'isMatched': True
}
私の実際の使用例は、最初の引数が file_object になることです。find_line 関数は、一致が見つかるまで (正しいか間違っているか)、または固定のタイムアウトになるまで、ファイルを追跡し続けます。
find_line
目的の出力が得られる実装を探しています。提案/解決策はありますか?