2012-03-21 8 views
1

私はre.searchを使ってたくさんの文字列を検索していますが、その中には不均衡な括弧が含まれています。私はどのようにそれらを再考するために無視するように言いますか?私はそれを生の文字列として扱うだけです。再式で、私​​はちょうどその前にR「を置くことができないので、しかし、これらの文字列がリストにあります。python生のテキストの括弧を無視する方法

for a in some_list: 
    for b in some_other_list: 
     if re.search(a[0],b[0], re.I): 
      do stuff.... 

その例では[0]の文字列が含まれていると私はそれがしたいですすべての "("または ")"文字をそのままコードとして扱い、再コード化しないでください。

答えて

1

パフォーマンスエスケープと正規表現コンパイルするための最良のは、あなたの内側のループの外で行われます。

for a in some_list: 
    pat = re.compile(re.escape(a[0]), re.I) 
    for b in some_other_list: 
     if pat.search(b[0]): 
      do stuff.... 
+0

素晴らしいです! re.escape(string)もmysqlクエリで問題を引き起こす可能性のある文字をエスケープしますか? –

+1

're'モジュールは、デフォルトの' re._MAXCACHE'が約100のIIRCのパターンをキャッシュします。したがって、 're.compile'はめったに必要ありません。 – wim

+0

このような場合のREのプリコンパイルは、システムがキャッシュ内でルックアップを行うのを避けます; – Alfe

1

文字列にre.escapeを使用したいと思います。バックスラッシュすべての非英数字 と

re.escape(string)

戻り文字列。正規表現のメタ文字が含まれている任意のリテラル 文字列と一致させる場合に便利です。

docs

関連する問題