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