Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで複数行のパターンを正規表現でマッチさせる方法

Pythonで複数行のテキストを正規表現にマッチさせるには?

Pythonのreモジュールで複数行にまたがる文字列を扱う場合、通常は特殊文字「.」が改行文字にマッチしないため、意図した通りにパターンを一致させることができません。

この問題を解決するのがre.DOTALLフラグです。このフラグを指定すると、「.」が改行文字(\n)を含むすべての文字にマッチするようになります。その結果、複数行にわたる段落やHTMLタグなどを一つのパターンで捉えられるようになります。

コード例

以下の例では、複数行のテキストから<p>タグで囲まれた部分を抽出しています。

import re

paragraph = '''
   This is a paragraph.
   It has multiple lines.
'''

match = re.search(r'<p>.*</p>', paragraph, re.DOTALL)
print(match.group(0))

※ 上記のコードはPython 3の構文です。Python 2では print match.group(0) のように括弧なしで記述します。

実行結果

This is a paragraph.
It has multiple lines.

ポイント解説

  • re.DOTALL: 「.」を改行文字にもマッチさせるフラグ。re.Sという省略形でも指定できます。
  • re.search(): 文字列全体を走査し、パターンに最初にマッチした部分を返します。
  • group(0): マッチした文字列全体を取得します。

なお、re.DOTALLを使わない場合、「.」は改行をまたげないため、複数行のテキストではマッチに失敗します。複数行処理が必要な場面では、このフラグを忘れずに指定しましょう。

  1. PythonのBokehを使って複数の折れ線を可視化する方法

    Bokehは、データ可視化を支援するためのPythonパッケージです。オープンソースプロジェクトとして公開されており、HTMLとJavaScriptを使用してグラフを描画します。そのため、Webベースのダッシュボードを作成する際に特に有用なライブラリとなっています。Bokehの仕組みBokehはデータソースをJSONファイルに変換します。このJSONファイルは、JavaScriptライブラリであるBokehJSへの入力として使用されます。BokehJSはTypeScriptで書かれており、最新のブラウザ上で可視化をレンダリングする役割を担っています。MatplotlibやSeabornが静的な

  2. 【Python入門】Matplotlibで複数のグラフを1つの図に組み合わせる方法(subplot・twinx活用)

    はじめに Matplotlibは、同じグラフ上に複数のプロットを重ねて描画できる強力なPythonの可視化ライブラリです。本チュートリアルでは、2つの異なるY軸を使いながら、1つの図の中に複数のデータを組み合わせて表示する方法を、実際に動くコード例とともにわかりやすく解説します。 事前準備:Matplotlibのインストール まず、Pythonのコマンドプロンプト(ターミナル)を開き、以下のコマンドでmatplotlibをインストールしてください。 pip install matplotlib 手順1:表示するデータを準備する ここでは、iPhone・Galaxy・Pixelの3機種につい