Pythonを使用した正規表現の初心者向けガイド

Pythonを使用した正規表現の初心者向けガイド

あなたがプログラマーなら、正規表現(regex)が何であるかをすでに知っている可能性があります。正規表現パターンは、ほとんどすべての主流のプログラミング言語で実装されていますが、それでも、これらのパターンの能力と多様性は、ほとんどの開発者に認識されていません。





このガイドでは、正規表現と、Pythonプログラミング言語で正規表現を使用する方法について説明します。





正規表現とは何ですか?

正規表現は、ユーザーがテキストファイルと文字列の文字の組み合わせを照合するのに役立つパターンです。正規表現を使用して、コマンドまたはドキュメントの出力で特定のパターンをフィルタリングまたは検索できます。





正規表現にはさまざまな使用例がありますが、最も有名なのは Linuxのgrepコマンド 。他のアプリケーションには、データダンプからの電子メールアドレスと電話番号の抽出などの情報フィルタリングが含まれます。

多くの開発者が正規表現から逸脱する主な理由は、パターンマッチングの力についての認識が不足していることです。パターンで使用される文字とシーケンスの量が多いため、正規表現が混乱する場合もあります。



理由が何であれ、正規表現は、誰もが知っておくべきプログラミングの最も重要な側面の1つです。

4GBと8GBのRAMを一緒に使用できますか

正規表現:文字とシーケンスの一致

正規表現はそれ自体がまったく新しい言語です。正規表現エンジンは、特定の意味を持つ複数の文字で構成されるパターンを解釈します。英数字などの基本的なリテラルは一致します。ただし、$、*、+、{などの複雑な文字は、高次のマッチングに役立ちます。





  1. アスタリスク(*): 前の文字と0回以上一致します。文字の文字通りの意味は、「要素をn回乗算した」になります。たとえば、正規表現が abc * 、一致する文字列はab、abc、abcc、abccc、abccccなどになります。式 [紀元前]* bc、bcbc、bcbcなどに一致します。
  2. もっと(+): 前の文字と1回以上一致します。の働き + 文字はに似ています * 、 しかし + 文字が出現しない場合、文字はパターンを省略します。例えば、 abc + abc、abcc、abcccなどと一致しますが、abとは一致しません。
  3. 疑問符(?): 前の文字に0回または1回一致します。たとえば、パターン abc? abとabcのみに一致します。
  4. パイプ(|): バイナリとして使用 また オペレーター。パイプの前後の文字のいずれかに一致します。例えば、 a | b aまたはbのいずれかに一致します。
  5. ドット(。): 身元が不明なキャラクターに一致します。例えば、 交流 aac、abc、acc、a2cなどに一致します。
  6. にんじん(^): パターンの最初の文字に一致します。例えば、 ^ Ra で始まる単語に一致します ウサギ、アライグマ、ランダムなど。
  7. ドル($): パターンの最後の文字に一致します。例えば、 an $ で終わる単語と一致します NS Van、Dan、Planなど。
  8. ハイフン(-): 文字の範囲を定義するために使用されます。例えば、 [0-9] すべての1桁の数字に一致します。

正規表現パターンで使用される特別なシーケンスは次のとおりです。

  1. に: 後続の文字が文字列の先頭にある場合、一致を返します。例えば、 AThe で始まる単語に一致します NS The、Them、Theyなど。
  2. NS: 文字が単語の最初または最後に見つかった場合、一致を返します。例えば、 bmad狂った b 次のような単語に一致します 作る遊牧民 それぞれ。
  3. NS: 文字が単語の最初または最後に見つからない場合、一致を返します。
  4. NS: 文字列に存在する数字に一致します。例えば、 /NS* 1、12、1232などの番号に一致します。
  5. NS: 文字列内の数字以外の文字に一致します。 /NS a、b、c、fなどに一致します。
  6. NS: テキスト内の空白文字に一致します。
  7. NS: テキスト内の空白以外の文字に一致します。
  8. の: 文字列にアンダースコアを含む英数字が含まれている場合、一致を返します。例えば、 a、b、c、d、1、2、3などに一致します。
  9. の: 文字列に英数字またはアンダースコアが含まれていない場合は、一致を返します。
  10. と: 文字列の最後の文字と一致します。例えば、 end Z で終わる単語と一致します 終わり 曲げる、修復する、傾向があるなど。

正規表現のPythonメソッド

Pythonでは、 NS ライブラリは、プログラムに正規表現を実装するために必要なすべての機能とユーティリティを提供します。 Pythonインタープリターがプリインストールされているため、pipを使用してライブラリをダウンロードする必要はありません。





をインポートするには NS Pythonのライブラリで、次のコードをスクリプトに追加します。

import re

Pythonで正規表現を渡すときは、次のような特殊文字を解釈しないため、生の文字列を使用することに注意してください。 NSNS 別の方法で。

マッチ()

NS 再戦() プログラムが指定された文字列の先頭で一致を見つけた場合、Pythonのメソッドは正規表現オブジェクトを返します。この関数は、2つの基本的な引数を取ります。

re.match(pattern, string)

...どこ パターン は正規表現であり、 ストリング 検索する必要のあるテキストです。

以下のコードスニペットをご覧ください。

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

NS NS 文字列の前の文字は生の文字列を表します。

出力:

None

前述のコードは なし なぜなら 言葉 文字列の先頭には存在しませんでした。

一致するものが見つかった場合は、を使用して一致を印刷できます。 グループ() 正規表現オブジェクトに属するメソッド。

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

出力:

Word

NS リサーチ () メソッドはre.match()と同様の引数を取ります。 match()は文字列の先頭にある一致のみを返しますが、 探す() 文字列内の任意のインデックスで見つかった一致を返します。

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

注意してください マッチ()探す() メソッドは1つのパターン一致のみを返します。上記のコードでは、 言葉 2回表示されます。しかし 探す() 関数は、単語の最初の出現にのみ一致します。

Word

FindAll()

あなたがすでに推測できるように、 findall() メソッドは、文字列内の可能なすべての一致を返します。

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

正規表現オブジェクトを返す代わりに、findall()関数はすべての一致のリストを返します。を使用してリストを反復処理できます Pythonのforループ

スプリット()

パターンを区切り文字として使用して文字列をサブ文字列に分割する場合は、 スプリット() 機能はあなたが必要とするものです。

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

出力:

['This word', 'that', 'this are different.']

サブ()

NS サブ() メソッドを使用すると、ユーザーはパターンの代わりに特定の単語を置き換えることができます。次の引数を取ります。

re.sub(pattern, replacement, string)

このコードスニペットについて考えてみましょう。

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

出力:

Dave or Harry must be punished.

コンパイル()

NS re.compile() のメソッド NS ライブラリを使用すると、ユーザーは正規表現パターンのコンパイル済みバージョンをメモリに保存できます。次に、コンパイルされたオブジェクトを使用して、ユーザーは指定されたテキストダンプをすばやくフィルタリングして一致するパターンを見つけることができます。

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

この関数は主に、リソースを大量に消費し、実行に多くの時間を必要とするパターンを保存するために使用されます。パターンをオブジェクトとしてコンパイルして保存することで、この問題を事前に解決できます。

Pythonで正規表現の力を活用する

テキストファイルと出力を操作する場合、正規表現は自由に使用できる優れたツールです。ドキュメント内の特定のパターンをフィルタリングまたは置換するためのコードをすばやく作成できます。

正規表現を使い始めたばかりの場合、すべての文字と一致するシーケンスを覚えるのは難しい場合があります。正規表現を上手にするには、文字、メソッド、シーケンスのリストを時々参照することで、長期的には間違いなく役立ちます。

共有 共有 つぶやき Eメール 新進プログラマーのためのPythonRegExチートシート

このPython正規表現のリストを使用して、この用途の広いプログラミング言語を上手に使用できるようにしてください。

次を読む
関連トピック
  • プログラミング
  • プログラミング
  • Python
著者について ディーペッシュシャルマ(79件の記事が公開されました)

Deepeshは、MUOのLinuxのジュニアエディターです。彼はLinuxに関する情報ガイドを作成し、すべての新規参入者に至福の体験を提供することを目指しています。映画についてはよくわかりませんが、テクノロジーについて話したいのなら、彼はあなたの男です。余暇には、本を読んだり、さまざまな音楽ジャンルを聴いたり、ギターを弾いたりしています。

DeepeshSharmaのその他の記事

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください