Python 正規表現の例

Python Zheng Gui Biao Xianno Li



正規表現の完全な形式は正規表現です。これはあらゆるプログラミング言語の重要な機能です。これは、文字列値内の文字列の一致、検索、または置換に使用される文字列パターンです。正規表現パターンは、Python の「re」モジュールを使用して Python スクリプトで使用できます。このモジュールには、さまざまな文字列操作を実行するためのさまざまな種類の関数があります。タスクを検索または置換するための正規表現パターンを定義するには、さまざまなメタキャラクタと特別なシーケンスが使用されます。このチュートリアルでは、Python スクリプトで一般的に使用されるいくつかのメタキャラクター、特別なシーケンス、および正規表現メソッドを使用する目的を示します。

正規表現で一般的に使用されるメタ文字のいくつかは次のとおりです。









キャラクター 目的
「+」 これは、文字列内の特定の文字の 1 つ以上の出現と一致するために使用されます。
「*」 これは、文字列内の特定の文字の 0 個以上の出現と一致するために使用されます。
「?」 これは、文字列内の特定の文字の 0 回または 1 回の出現と一致するために使用されます。
'^' これは、文字列の先頭にある特定の文字または文字列と一致するために使用されます。
「$」 これは、文字列の末尾にある特定の文字または文字列と一致するために使用されます。
'|' これは、文字列内の複数の文字列のいずれかと一致するために使用されます。 OR ロジックのように機能します。
「[]」 文字の範囲を一致させるために使用されます。
「{}」 特定の数の文字を一致させるために使用されます。



正規表現で一般的に使用される特殊なシーケンスのいくつかは次のとおりです。





シーケンス 目的
「\A」 これは、文字列の先頭にある特定の文字と一致するために使用されます。 「^」文字と同じように機能します。
「\b」、「\B」 「\b」は、文字列の先頭または末尾に特定の文字または単語を含む文字列と一致するために使用されます。 「\B」は「\b」の逆の働きをします。
「\d」、「\D」 「\d」は、「[0-9]」のような文字列内の 10 進数と一致するために使用されます。 「\D」は「\d」の逆の働きをします。
「\s」、「\S」 「\s」は、「[\n\t\r\v]」のような文字列内の空白と一致するために使用されます。 「\S」は「\s」の逆の働きをします。
「\w」、「\W」 「\w」は、文字列内の英字と数字を照合するために使用されます。 「\W」は「\w」の逆の働きをします。
'\と' 文字列の末尾にある特定の文字を照合するために使用されます。これは「$」文字と同じように機能します。

例 1: Match() 関数を使用して文字列を一致させる

match() 関数は、文字列の先頭にある正規表現パターンと一致するために使用されます。この関数の構文は次のようになります。



構文:

再戦 ( パターン、文字列、 フラグ = 0 )

ここで、最初の引数は正規表現パターンを定義するために使用されます。 2 番目の引数は、メイン文字列を定義するために使用されます。 3 番目の引数はオプションであり、さまざまなタイプのフラグを定義するために使用されます。

match() 関数を使用して、正規表現パターンと定義された文字列を照合する次のスクリプトを含む Python ファイルを作成します。まず、定義された正規表現パターンが照合に使用されます。次に、ユーザーから検索語が取得され、文字列値と照合するための正規表現パターンとして使用されます。一致するものが見つかった場合は、検索語が出力されます。それ以外の場合は、「一致する値が見つかりません」という文字列が出力されます。

#必要なモジュールをインポート
輸入再

#一致結果を出力する関数を定義する
デフォルトの一致文字列 ( ) :
#match()関数の戻り値を確認する
もし とともに = なし:
印刷する ( 「」 + マットグループ ( ) + 「」は「」で見つかりました + strValue + 「」 )
それ以外:
印刷する ( 「一致する値が見つかりません。」 )

#文字列値を定義する
str値 = '先入先出。'
#パターンに基づいて文字列を照合します
マット = 再マッチ ( '^最初' 、strValue )
#関数を呼び出して試合結果を出力する
一致文字列 ( )

#検索文字列を取得します
inValue = 入力 ( 「検索値を入力してください:」 )
マット = 再マッチ ( inValue + 、strValue )
#関数を呼び出して試合結果を出力する
一致文字列 ( )

「最初の」入力値に対して次の出力が表示されます。

例 2: Findall() 関数を使用して文字列を検索する

findall() 関数は、メイン文字列内で見つかったすべての一致する単語をタプルとして返すために使用されます。

構文:

リ・フィンダル ( パターン、文字列、 フラグ = 0 )

ここで、最初の引数は正規表現パターンを定義するために使用されます。 2 番目の引数は、メイン文字列を定義するために使用されます。 3 番目の引数はオプションであり、さまざまなタイプのフラグを定義するために使用されます。

ユーザーからメイン文字列値と検索文字列値を取得する次のスクリプトを含む Python ファイルを作成します。次に、正規表現パターンで検索語を使用して、メイン文字列で検索語を見つけます。合計一致数が出力に表示されます。

#必要なモジュールをインポート
輸入再

#文字列値を取得します
inValue = 入力 ( 「文字列を入力してください:」 )

#検索ワードを取得する
srcValue = 入力 ( 「検索ワードを入力してください:」 )

#文字列内の単語を検索します
srcResult = re.findall ( ソース値 + '\で*' 、inValue )
#検索結果を印刷する
印刷する ( '言葉 '' + ソース値 + 文字列「」内に「」が見つかりました
+ 文字列 ( のみ ( ソース結果 ) ) + 「回」。 )

出力によると、検索ワード「eat」が「We Eat to live and don't live to Eat」のメイン文字列で 2 回見つかりました。

例 3: Search() 関数を使用して文字列を検索する

search() は、文字列値内の特定のパターンを検索する別の関数です。これには、match() 関数および findall() 関数と同じ引数が含まれます。ユーザーから取得する文字列値で「Python」という単語を検索する次のスクリプトを含む Python ファイルを作成します。入力値に検索語が存在する場合は、成功メッセージが出力されます。それ以外の場合は、失敗メッセージが出力されます。

#モジュールのインポート
輸入再

#文字列値を取得します
inValue = 入力 ( 「文字列を入力してください:」 )
#文字列値内の特定の単語を検索します
srcResult = re.search ( r 'パイソン\w*' 、inValue )

#検索ワードが見つかるかどうかを確認する
もし ソース結果:
印刷する ( 「」 + srcResult.group ( ) + 「」は「」で見つかりました + inValue + 「」 )
それ以外:
印刷する ( 「検索文字列が見つかりません。」 )

出力:

入力文字列が「I like Python programming」の場合、次の出力が表示されます。

入力文字列が「I like PHP programming」の場合、次の出力が表示されます。

例 4: Sub() 関数を使用して文字列を置換する

sub() 関数は、パターンに基づいて特定の文字列を検索し、別の単語に置換するために使用されます。この関数の構文は次のようになります。

構文:

re.sub ( パターン、置換文字列、メイン文字列 )

この関数の最初の引数には、メイン文字列内の特定の文字列を検索するために使用されるパターンが含まれます。

この関数の 2 番目の引数には、「replace」文字列値が含まれます。

この関数の 3 番目の引数にはメイン文字列が含まれます。

この関数は、最初の引数に基づいてメイン文字列に一致する単語が存在する場合、置換された文字列を返します。

文字列の末尾の 2 桁を検索する次のスクリプトを含む Python ファイルを作成します。文字列の末尾に 2 桁の数字が含まれる場合、その数字は「$50」という文字列に置き換えられます。

#モジュールのインポート
輸入再

#メイン文字列を定義する
str値 = 「本の値段は70円です」

#検索パターンを定義する
パターン = '[0-9]{2}'

#置換値を定義する
replaceValue = 「50ドル」

#パターンに基づいて文字列を検索して置換します
modified_strValue = re.sub ( パターン、replaceValue、strValue )
#元の文字列値と変更された文字列値を出力します
印刷する ( 「元の文字列:」 + strValue )
印刷する ( 「変更された文字列:」 +modified_strValue )

出力:

メインストリングの最後には70がありました。したがって、置換された文字列では 70 が $50 に置き換えられます。

例 5: Subn() 関数を使用して文字列を置換する

subn() 関数は sub() 関数と同様に機能しますが、最初のインデックスに置換された値が含まれ、2 番目のインデックスに一致の合計数が含まれるタプルとして出力を返す点が異なります。

subn() 関数を使用して、「LinuxHint.com」文字列内のアルファベット A から L を検索する次のスクリプトを含む Python ファイルを作成します。

#モジュールのインポート
輸入再

#メイン文字列を定義する
str値 = 「LinuxHint.com」

#検索パターンを定義する
パターン = 「[その人へ]」

#置換値を定義する
replaceValue = 「*」

#パターンに基づいて文字列を検索して置換します
modified_strValue = re.subn ( パターン、replaceValue、strValue )
#元の文字列とsubn()の出力を出力します。
印刷する ( 「元の文字列: \n + strValue )
印刷する ( 「subn() 関数の出力:」 )
印刷する ( 修正された_strValue )

出力:

次の出力によると、「L」文字と「H」文字は「*」文字に置き換えられます。

例 6: Split() 関数を使用して文字列を分割する

正規表現パターンに基づいてメイン文字列を複数の部分に分割するために、split() 関数を使用する次のスクリプトを含む Python ファイルを作成します。

#モジュールのインポート
輸入再

#文字列値を定義
strVal= 「ルパ・アクター、ニラ・チョードリー、マザルル・イスラム」
#データの分割に使用されるパターンを定義します
パターン = 「[^A-Za-z]」
#分割した値をリストに保存する
split_result = 再分割 ( パターン、strVal )
印刷する ( 「split() 関数の出力:」 )
印刷する ( 分割結果 )

出力:

出力によると、メイン文字列は、スクリプトで使用されている「[^A-Za-z ]」パターンに基づいて 3 つの部分に分割されています。

結論

このチュートリアルでは、簡単な Python スクリプトを使用して、最も一般的に使用されるメタキャラクター、範囲、文字列の検索、置換、分割を行う Python 組み込み関数の目的を示します。