Python の正規表現置換メソッド

Muhammad Waiz Khan 2021年6月22日
Python の正規表現置換メソッド

このチュートリアルでは、re.sub() メソッドの使用法と関数を調べ、サンプルコードを調べます。Python の re モジュールは、Unicode 文字列と 8 ビット文字列の両方に正規表現を使用してさまざまな機能を提供します。機能には、文字列の置換、分割、マッチングなどが含まれます。

Python で re.sub() メソッドを使用した正規表現の置換

re.sub(pattern, repl, string, count=0) メソッドは、入力として string を受け取り、pattern の左端のオカレンスを repl に置き換えます。string 引数に pattern が見つからない場合、string は変更なしで返されます。

pattern 引数は正規表現の形式である必要があります。repl は文字列または関数にすることができます。repl 引数が文字列の場合、stringpatternrepl 文字列に置き換えられます。関数が repl 引数として渡された場合、pattern の出現が見つかるたびに関数が呼び出されます。この関数は、matchObject を入力として受け取り、置換文字列を返します。matchObject は、一致が見つかった場合は True に等しくなり、それ以外の場合は None に等しくなります。

オプションの count 引数は、string で置換する pattern の最大出現回数を表します。

以下のサンプルコードは、re.sub() メソッドを使用して、正規表現を使用して文字列から一部のパターンを置き換える方法を示しています。

import re

string = "Hello! How are you?! Where have you been?!"
new_string = re.sub(r"""[!?'".<>(){}@%&*/[/]""", " ", string)
print(new_string)

出力:

Hello  How are you   Where have you been  

上記のコード例では、pattern 引数で指定された文字を空白で削除します。これは、上記のコードの repl 引数です。

以下のサンプルコードに示すように、この関数を repl 引数として使用して、repl 引数の出現が見つかったときに" "を返すことで、同じタスクを実行することもできます。

import re


def repl_func(match):
    if match == True:
        return " "


string = "Hello! How are you?! Where have you been?!"
new_string = re.sub(r"""[!?'".<>(){}@%&*/[/]""", repl_func, string)
print(new_string)

出力:

Hello How are you Where have you been

関連記事 - Python Regex