HOWTO · Python

Python 正規表現エスケープ

この記事では、Python での正規表現の使用とそのエスケープについて説明します。

このページの内容

この記事は、Python の正規表現エスケープに関するものです。 さらに、Python 正規表現エスケープと、適切なサンプル コードでの使用方法、および Python 正規表現の複数の使用方法についても説明します。

さらに、Python は、正規表現 (または正規表現) を使用した文字列の検索および置換操作をサポートしています。

Python 正規表現エスケープ

RegExは、定義済みのパターンに従ってテキストを照合するための優れた手法です。 テキストを特定のパターンと比較すると、存在するか存在しないかを検出できます。

パターンをサブパターンに分割することもできます。 Python では、正規表現エスケープは幅広いタスクを実行できます。

検索と置換操作を実行し、テキスト内のパターンを置換し、文字列に特定のパターンが含まれているかどうかを確認できます。 正規表現を使用して、今日も検索と置換操作を実行します。

Python の正規表現は、標準ライブラリの re モジュールを使用して表現できます。 正規表現と文字列は、検索を実行することを主な目的としています。

最初の一致があるかどうかにかかわらず、一致が返されます。

Python には、検索と置換を支援するデフォルト モジュール re があります。 私たちのコードは、それを使用するために最初にモジュールをインポートする必要があります。

import re

コード例:

import re

match = re.search(
    r"Analytics",
    "DataScience: Data Science & Analytics\                                    subfield of AI",
)
print(match)
print(match.group())
print("Begin the Index:", match.start())
print("Let's finish the Index:", match.end())

出力:

<re.Match object; span=(28, 37), match='Analytics'>
Analytics
Begin the Index: 28
Let's finish the Index: 37

Python 正規表現エスケープの構文

生のプロパティは、正規表現ではなく、ここでは r 文字、(r'property') で表されます。 通常の文字列とは異なり、プレーンな文字列は \ 文字をエスケープ文字として解釈しません。

正規表現エンジンがエスケープに / 文字を使用する方法により、/ 文字を使用してエスケープします。

これを Python で詳しく説明しましょう。

import re

# When an escape() is used in the first case, it returns a string with BackSlash '/' before every non-Alphanumeric character. In the second case, it returns a string with BackSlash '/' before '' only.
print(re.escape("It was really a wonderful experience so far"))
print(re.escape("I am curious about the experience [a-9], she said \t ^Awesome"))

出力:

It\ was\ really\ a\ wonderful\ experience\ so\ far
I\ am\ curios\ about\ the\ experience\ \[a\-9\],\ she\ said\ \	\ \^Awesome

また、Python で正規表現を使用して文字列に単語が存在するかどうかを確認する場合は、コンマを使用して文字列を区切ることができます。

文字列にエスケープ文字がない限り、r は文字列をエスケープ文字を処理しない生の文字列にします。

また、re.match は文字列の先頭から一致します。 これは、文字列とパターンの完全一致を検索することを意味します。

文字列内の任意の場所に一致させる必要がある場合は、re.search を使用します。 以下は一例です。

import re

line = "This,is,a,practice,string"
re.match("practice", line)
re.search("practice", line)

出力:

<re.Match object; span=(10, 18), match='practice'>

さらに、Python 正規表現の複数の用途について学びます。

Python 正規表現の複数の使用

検索して正規表現で置換

regex メソッドでは、文字列が検索されてから、他の値が置き換えられます。 re モジュールの Python の re.sub() 関数は、これを達成するために使用されます。

構文:

re.sub(pattern, replacement, string, count=0, flags=0)

Python を使用して、正規表現を使用して文字列を検索して見つけることができます。 この場合、文字列は操作対象の文字列を含む変数です。

パターンが文字列内で複数回出現する場合、そのパターンを何回置換するかを指定できます。 0 がデフォルト値です。 いずれにせよ、それはオプションです。

正規表現フラグを指定する必要はありません。

コード例:

import re

str = "abid304@outlook.com"
print(re.sub("[a-z]*@", "abc@", str))

出力:

abid304abc@outlook.com

正規表現によるマルチパターン置換

正規表現を使用して、複数のパターンを一度に置き換えることができます。 次の構文を使用すると、これを簡単に実現できます。

構文:

re.sub(pattern_11 | pattern_22, replacement, string, count=0, flags=0)

コード例:

import re

str = "MachineLearning is the Subfield of AI"
print(re.sub(r"(\s)|(-)", ",", str))

出力:

MachineLearning,is,the,Subfield,of,AI

正規表現を使用して複数のパターンを複数の置換で置き換える

正規表現を使用して、複数のパターンを異なる置換で置き換えることもできます。 次の例に示すように、小さな変更が必要です。

コード例:

import re


def convrt_case(mtch_obj):
    if mtch_obj.group(1) is not None:
        return mtch_obj.group(1).lower()
    if mtch_obj.group(2) is not None:
        return mtch_obj.group(2).upper()


str = "mACHINE lEARNING IS THE sUBFIELD OF ai"
print(re.sub(r"([A-Z]+)|([a-z]+)", convrt_case, str))

出力:

Machine Learning is the Subfield of AI

この例に示すように、文字列には置換が必要な大文字と小文字の両方が含まれています。 大文字を小文字に、またはその逆に置き換える必要があります。

2つのグループを作成し、それらを置き換える関数を追加します。

Python では、正規表現エスケープ sub() メソッドを使用して文字列を置き換えます。 置き換えられた文字列は、re モジュールの Python 組み込みメソッドによって返されます。

re モジュールを必ずインポートしてください。 このメソッドでは、文字列内のパターンが検索され、新しい式に置き換えられます。

この Python の記事が、Python で regex escape をより効果的に使用する方法を理解するのに役立つことを願っています。