正規表現 (RE) を使用して大量のテキスト ファイルのサンプルを解析しようとしています。これらのファイルから'vu'を含み、改行'\n'で終わるテキストの部分を抽出しようとしています。
パターンはファイルごとに異なるため、OR演算子を使用してファイル内の RE の組み合わせを探してみました。しかし、re.findall()関数が RE の組み合わせを探すようにコードを自動化する方法が見つかりませんでした。
これは、この問題にどのように対処しようとしたかの例ですが、どうやらre.findall()で正規表現と OR 演算子の両方をまだ評価できないようです。
import re
def series2string(myserie) :
myserie2 = ' or '.join(serie for serie in myserie)
return myserie2
def expression(pattern, mystring) :
x = re.findall(pattern, mystring)
if len(x)>0:
return 1
else:
return 0
#text example
text = "\n\n (troisième chambre)\n i - vu la requête, enregistrée le 28 février 1997 sous le n° 97nc00465, présentée pour m. z... farinez, demeurant ... à dommartin-aux-bois (vosges), par me y..., avocat ;\n"
#expressions to look out
pattern1 = '^\s*vu.*\n'
pattern2 = '^\s*\(\w*\s*\w*\)\s*.*?vu.*\n'
pattern = [pattern1, pattern2]
pattern = series2string(pattern)
expression(pattern, text)
注: for ループで各パターンを検索することでこの問題を回避しましたが、 re.findall()を 1 回だけ使用できればコードの実行速度は速くなります。