[Python] reモジュールの使い方

reモジュールとは、Pythonの標準ライブラリに含まれる正規表現のためのモジュールです。正規表現は、文字列のパターンを表現するための言語で、パターンにマッチする文字列を検索、抽出、置換するために使用されます。Pythonのreモジュールは、正規表現を扱うための豊富な機能を提供しています。

まずはじめに、reモジュールを使用するためには、以下のようにimport文を記述します。

import re

これで、reモジュールを使用する準備が整いました。以下では、reモジュールの主な機能について説明していきます。

目次

正規表現のパターンを記述する

reモジュールを使って正規表現を扱うには、まず正規表現のパターンを記述する必要があります。正規表現のパターンは、文字列で表現されます。以下は、正規表現のパターンの例です。

pattern = r'apple'

正規表現のパターンは、通常、文字列の先頭に’r’を付けて表現します。これは、バックスラッシュをエスケープする必要がないことを意味しています。

マッチング

正規表現のパターンを記述したら、そのパターンにマッチする文字列を検索することができます。reモジュールでは、以下のような関数を提供しています。

  • re.search(pattern, string): 文字列stringの中から、正規表現のパターンに最初にマッチする部分を探して、そのマッチオブジェクトを返します。マッチしなかった場合はNoneを返します。

以下は、re.search関数を使用する例です。

string = 'I love apples'
pattern = r'apple'

match = re.search(pattern, string)
if match:
    print('マッチしました!')
else:
    print('マッチしませんでした。')

上記の例では、文字列’I love apples’の中から、正規表現のパターン’apple’に最初にマッチする部分を探しています。マッチする部分があるため、’マッチしました!’というメッセージが出力されます。

  • re.match(pattern, string): 文字列stringの先頭から、正規表現のパターンにマッチするかどうかを探して、そのマッチオブジェクトを返します。マッチしなかった場合はNoneを返します。

以下は、re.match関数を使用する例です。

string = 'apples are delicious'
pattern = r'apple'

match = re.match(pattern, string)
if match:
    print('マッチしました!')
else:
    print('マッチしませんでした。')

上記の例では、文字列’apples are delicious’の先頭から、正規表現のパターン’apple’にマッチするかどうかを探しています。先頭に’apple’があるため、’マッチしました!’というメッセージが出力されます。

  • re.findall(pattern, string): 文字列stringの中から、正規表現のパターンにマッチするすべての部分を探して、そのマッチオブジェクトのリストを返します。マッチしなかった場合は空のリストを返します。

以下は、re.findall関数を使用する例です。

string = 'I love apples and oranges'
pattern = r'[a-z]+'

matches = re.findall(pattern, string)
print(matches)

上記の例では、文字列’I love apples and oranges’の中から、小文字のアルファベットの連続した部分を探しています。マッチする部分は’apples’と’oranges’の2つあります。そのため、[‘love’, ‘apples’, ‘and’, ‘oranges’]というリストが出力されます。

パターンの指定方法

正規表現のパターンには、以下のような指定方法があります。

  • .: 任意の1文字にマッチする。
  • *: 直前のパターンが0回以上繰り返されることを表す。
  • +: 直前のパターンが1回以上繰り返されることを表す。
  • ?: 直前のパターンが0回または1回現れることを表す。
  • []: 括弧内のいずれか1文字にマッチする。
  • |: 縦棒の左右のどちらかにマッチする。
  • ^: 文字列の先頭にマッチする。
  • $: 文字列の末尾にマッチする。
  • \d: 数字にマッチする。
  • \w: 英数字またはアンダースコアにマッチする。
  • \s: スペース、タブ、改行にマッチする。

以上の指定方法を組み合わせることで、複雑なパターンを記述することができます。

グループ化

正規表現のパターン内で、グループを指定することもできます。グループ化することで、マッチした部分を、後で取り出すことができます。

グループ化は、以下のようにして行います。

  • (): グループを指定する。

以下は、グループ化を使用する例です。

string = 'My name is John Smith'
pattern = r'My name is (\w+) (\w+)'

match = re.search(pattern, string)
if match:
    print('名前は{} {}です。'.format(match.group(1), match.group(2)))
else:
    print('マッチしませんでした。')

上記の例では、文字列’My name is John Smith’の中から、’My name is’の後に空白が1つあり、その後に名前が2つ続く部分を探しています。その部分をグループ化し、名前を取り出しています。マッチする部分があるため、’名前はJohn Smithです。’というメッセージが出力されます。

置換

正規表現を使用すると、文字列内の一部を置換することもできます。置換には、re.sub()関数を使用します。

以下は、re.sub()関数を使用する例です。

string = 'I love apples and oranges'
pattern = r'apples'

new_string = re.sub(pattern, 'bananas', string)
print(new_string)

上記の例では、文字列’I love apples and oranges’の中から、’apples’という部分を探して、’bananas’に置換しています。そのため、’I love bananas and oranges’という文字列が出力されます。

まとめ

Pythonのreモジュールを使用すると、文字列内から正規表現のパターンにマッチする部分を検索したり、置換したりすることができます。正規表現のパターンを指定する方法や、グループ化の方法などを覚えることで、より複雑な検索や置換を行うことができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次