レッスン1 / 2問目

『正規表現とは』

このレッスンでは正規表現について学習していきましょう。

正規表現を使うと、意図した文字列を抽出することができます。

正規表現は検索やスクレイピングなど、様々な場面で使用されます。

例えば以下の文字列から郵便番号「530-0001」だけを抜き出すといったことができます。

〒530-0001 大阪市北区梅田5-4-22

正規表現を使ってみよう

では実際に正規表現の使い方を見ていきましょう。Pythonで正規表現を使うには標準モジュールであるreモジュールを使用します。import reでreモジュールをインポートします。

import re

任意の文字列を抽出するにはre.match()を用いて、第一引数に正規表現のパターン、第二引数に対象文字列を指定します。

re.match(正規表現のパターン, 抽出対象)

re.match()は第二引数の抽出対象から第一引数のパターンにマッチした文字列を抽出します。そしてre.match()はマッチした文字列などを持つマッチオブジェクトを返します。

また、第一引数の正規表現のパターンですが、メタ文字と呼ばれる、文字列のパターンを表現する文字を使用します。以下がメタ文字です(一部)。

メタ文字説明
.改行以外の任意の1文字
\d0~9の数字
*直前のパターンの繰り返し

例えば任意の一文字を表す . (ドット)と、直前のパターンを繰り返す * (アスタリスク)を使用すると、「任意の一文字を繰り返す」パターンとなるため、全ての文字列を抽出することができます。

以下の例では正規表現を用いて、文字列sの全ての文字列を抽出しています。

  1. import re
  2. s = "Hello Leagence"    # 対象文字列
  3. m = re.match(".*", s)    # sから指定したパターンの文字列を抽出
  4. print(m)    # マッチオブジェクトを出力
  5. print(m.group())    # 「m.group()」でマッチオブジェクトからマッチした文字列を取得
<re.Match object; span=(0, 14), match='Hello Leagence'>    # マッチオブジェクト Hello Leagence    # マッチした文字列

re.match()で取得したマッチオブジェクトに対して、 .group() と記述することでマッチした文字列を取得することができます。


また、以下の例は、正規表現のパターンに . (ドット)を3つ記述した例です。
この場合先頭から3文字が抽出されます。

  1. import re
  2. s = "Hello Leagence"
  3. m = re.match("...", s)    # パターンに「...」を指定
  4. print(m.group())    # マッチした文字列を取得
Hel    # 3文字が抽出される

ではこのレッスンは以上となります。演習課題にチャレンジしましょう。

Lesson1

reモジュールをインポートしてください。

Lesson2

文字列sから"Hello"を抽出し、出力してください。

Lesson3

文字列nから"123"を抽出し、出力してください。


バックスラッシュはwindowsでは円マークとなります。(エディタ上ではバックスラッシュとなります)

Last updated:2019/12/15

Hello
123
  1. s = "Hello Leagence"
  2. n = "123456"
  3. # 1. reモジュールをインポートしてください
  4. import re
  5. # 2. "Hello"を抽出し、出力してください。
  6. m = re.match(".....", s)
  7. print(m.group())
  8. # 3. "123"を抽出し、出力してください。
  9. m = re.match("\d\d\d", n)
  10. print(m.group())
main.py
設定
g
n
i
d
a
o
L