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

【Python入門】正規表現におけるバックスラッシュ(\)の役割と使い方

Pythonの正規表現において、おそらく最も重要なメタ文字がバックスラッシュ(\)です。Pythonの文字列リテラルと同様に、バックスラッシュの後にさまざまな文字を続けることで、特別なシーケンスを表現できます。たとえば、\d は任意の数字1文字、\s は空白文字、\w は英数字やアンダースコアにマッチします。

さらに、バックスラッシュはメタ文字のエスケープにも使われます。パターンの中でメタ文字そのものにマッチさせたい場合は、直前にバックスラッシュを置いて特殊な意味を打ち消します。たとえば、[\ 自体にマッチさせたい場合は、\[\\ のように記述します。

サンプルコード

以下のコードは、Pythonの正規表現におけるバックスラッシュの働きを示したものです。

import re
result = re.search('\d', '\d')
print result
result = re.search(r'\\d', '\d')
print result.group()

実行結果

None
\d

コードの解説

1つ目のsearch:マッチしないケース

re.search('\d', '\d') では、パターン \d は「数字1文字」を意味します。しかし検索対象の文字列 '\d' には数字が含まれていないため、マッチは見つからず None が返されます。

2つ目のsearch:エスケープによるリテラルマッチ

re.search(r'\\d', '\d') では、raw文字列 r'\\d' が「リテラルなバックスラッシュ+d」、つまり文字列としての \d そのものにマッチするパターンを表します。そのため、検索対象文字列中の \d にマッチし、group() メソッドによってマッチした部分 \d が出力されます。

ポイントまとめ

  • \d\s\w などの特殊シーケンスを使うと、正規表現の表現力が大きく向上する
  • メタ文字を通常の文字として扱いたい場合は、バックスラッシュでエスケープする
  • raw文字列(r'')を活用すると、バックスラッシュの二重エスケープを避けられ、コードの可読性が上がる

※上記のサンプルコードはPython 2形式の print 文を使用しています。Python 3環境では print(result) のように関数形式で記述してください。

  1. PythonのBokehで画像を操作・表示する方法

    Pythonの可視化ライブラリBokehで画像を扱うには、image_url()メソッドを使い、画像URLのリストを渡すのが基本です。このメソッドを使うことで、ローカルやWeb上にある画像をプロット領域内に簡単に配置できます。実装の手順output_file()でデフォルトの出力先を設定し、show()を呼び出したときに結果がHTMLファイルとして保存されるようにします。figure()でプロット用の新しいFigure(図)オブジェクトを作成します。image_url()メソッドで、指定したURLから読み込んだ画像を描画します。show()を呼び出して、Bokehオブジェクトやアプリケーション

  2. Pythonモジュールの仕組みを徹底解説!importの基本と使い方を実例で学ぼう

    Pythonでは、関数や変数などの定義(definition)をひとつのファイルにまとめ、それをスクリプトやインタラクティブな対話シェルの中で再利用することができます。このような定義を格納したファイルのことを「モジュール(module)」と呼びます。 モジュールとは何か モジュール内に書かれた定義は、他のモジュールにインポートして利用できますし、メインモジュールに読み込むことも可能です。ここでいうメインモジュールとは、トップレベルで実行されるスクリプトや、電卓モード(対話モード)でアクセスできる変数群のことを指します。 モジュールが見つかる仕組み:検索パス 例えば hello というモジュ