1. ホーム
  2. スクリプト・コラム
  3. パイソン

Python正規表現(推奨)

2022-01-27 23:14:44

1 序文

正規表現とは、通常の文字(aからzまでの文字)と特殊文字(メタ文字と呼ばれる)の文字列を、あらかじめ定義された特定の文字の集合とその組み合わせによって、quot;正規文字列として操作する論理式です。正規表現は、テキストを検索する際にマッチさせる1つまたは複数の文字列を記述したテキストパターンです。

上記は公式の説明ですが、ブログ管理人自身の理解(あくまで参考)では、いくつかの特殊文字のマッチングルールをあらかじめ指定しておき、その文字を組み合わせることで、様々な複雑な文字列のシナリオにマッチングさせるというものです。例えば、クローラーやデータ解析、文字列照合など、いずれも正規表現を使ってデータを処理する必要がある。

pythonの正規表現はreモジュールです。

  • re モジュールは Python 言語に完全な正規表現の機能を与えます。
  • は、その
  • また、reモジュールは、パターン文字列を第一引数とするこれらのメソッドと完全な互換性を持つ関数を提供します。

2 基本的な構文

2.1 マッチ機能

以下は、文字列の先頭からのパターンのみにマッチする関数の構文である。

re.match(pattern, string, flags = 0)

以下は、パラメータの説明です。

  • p attern - 一致させる正規表現です。
  • string - これは、文字列の先頭でパターンにマッチするように検索される文字列です。
  • flags - ビット単位のOR(|)で異なるフラグを指定することができる。これらは、以下の表に示すような修飾子である。
  • re.match関数は、成功するとマッチを、失敗するとNoneを返します。オブジェクトのマッチにはmatch(num)関数またはgroups関数を使用して、マッチング式を取得します。

# 初期位置からマッチしない、Noneを返す import re line = 'i can speak good english' matchObj = re.match(r(w*)s(w*). *',line) if matchObj:print('matchObj.group :',matchObj.group)print('matchObj.group :',matchObj.group(1))print('matchObj.group :',matchObj.group(2))print('matchObj.group :',matchObj.group(3))else:print('no match!'))。

# match from initial positionimport re line = 'i can speak good english' matchObj = re.match(r'(i)s(w*)s(w*). *',line) if matchObj:print('matchObj.group :',matchObj.group)print('matchObj.group :',matchObj.group(1))print('matchObj.group :',matchObj.group(2))print('matchObj.group :',matchObj.group(3))else:print('no match!'))マッチしません。

2.2 検索機能

検索機能は、matchと同じように動作しますが、最初からマッチするのではなく、どの位置からでも最初にマッチするものを探します。この関数の構文は次のとおりです。

re.match(pattern, string, flags = 0)

以下は、パラメータの説明です。

  • pattern - マッチする正規表現です。
  • string - これは、文字列の先頭でパターンにマッチするように検索される文字列です。
  • flags - ビット単位のOR(|)で異なるフラグを指定することができる。これらは、以下の表に示すような修飾子である。
  • re.search関数は、成功すればマッチを返し、そうでなければNoneを返します。マッチした式を得るには、マッチオブジェクトのgroup(num)またはgroups関数を使用します。最後に、あなたの時間は非常にタイトではない、とすぐにパイソンを改善したい場合は、最も重要なことは、苦しむことを恐れていない、それはあなたがラックマイクロ♥文字をすることができますことをお勧めします。762459510 、その本当に良い、多くの人々が非常に迅速に進行し、あなたがああ苦しむことを恐れていない必要があります! 誰もが〜を参照してくださいに追加するために行くことができます。

import re line = 'I can speak good english' matchObj = re.search('(. ) (. ?) (. *)',line)if matchObj:print('matchObj.group :',matchObj.group)print('matchObj.group :',matchObj.group(1))print ('matchObj.group :',matchObj.group(2))print('matchObj.group :',matchObj.group(3))else:print('no match !')

2.3 サブ関数

正規表現のreモジュールを使う上で、最も重要なものの1つがsubです。

re.sub(pattern, repl, string, max=0)

このメソッドは、REパターンの文字列のすべての出現箇所をreplで置き換え、maxが提供されない限りすべての出現箇所を置き換えます。このメソッドは、変更された文字列を返します。

import re line = 'I can speak good english' speak = re.sub(r'can','not',line) print(speak) speak1 = re.sub(r's',',line) # すべてのスペースを置換する print(speak1)

3 特殊クラスの構文

3.1 文字クラス

3.2 特殊文字クラス

3.3 リピートマッチ

3.4 欲張らない繰り返し

最小限の繰り返し回数と一致します。

3.5 ラウンドブラケットグルーピング

3.6 逆引きリファレンス

以前にマッチングしたグループと再度マッチングする

3.7 アンカーポイント

一致する位置を指定する必要がある。

3.8 括弧を使った特殊な構文

Pythonの正規表現に関する記事は以上です。Python Regular Expressionsの詳細については、過去の記事を検索するか、引き続き以下の記事を参照してください。