Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ グルーピング、量指定子、アンカー | 中級正規表現
Python正規表現

グルーピング、量指定子、アンカー

メニューを表示するにはスワイプしてください

パターンの一部をグループ化し、繰り返し回数を指定し、文字列内でマッチが発生する位置を定義することは、強力な正規表現を記述するために不可欠なスキルです。Python では、括弧 () を使用してグループを作成し、複数の文字を単一の単位として扱うことができます。*+?、および {n,m} のような量指定子は、文字やグループが何回出現するかを制御します。^$ のようなアンカーは、文字列の先頭や末尾にマッチする特別な記号です。

括弧によるグループ化

括弧によるグループ化を使うと、個々の文字ではなくサブパターン全体に量指定子を適用できます。例えば、(ab)+ab の並びが1回以上繰り返される部分にマッチします。

量指定子

  • アスタリスク(*)は「0回以上」
  • プラス記号(+)は「1回以上」
  • クエスチョンマーク(?)は「0回または1回」
  • 波括弧({n,m})は最小(n)回から最大(m)回までを指定

アンカー

アンカーはマッチする文字ではなく、文字列内の位置を示すマーカーです。キャレット(^)は先頭を、ドル記号($)は文字列の末尾を表します。

1234567
import re text = "hello hello world world world" pattern = r"(world\s+)+" matches = re.findall(pattern, text) print(matches)

ステップごとの分析:グループ化と量指定子

この例では、正規表現パターン (world\s+)+ を使って、world という単語がスペースとともに繰り返される部分を検索しています。このパターンの動作を分解してみましょう:

  • 括弧 () により world\s+グループ化し、world とその後の空白を1つの単位として扱います;
  • グループ直後のプラス記号 + の量指定子は、このグループが1回以上連続して現れることを意味します;
  • その結果、このパターンは world がスペースを挟んで繰り返されるすべての並びにマッチし、最長のそのような並びを取得します。

グループ化は、量指定子を文字列の並びやマッチした部分を後で利用するためにキャプチャしたい場合に特に有用です。量指定子は、単一の文字、文字クラス、またはグループ全体に適用できます。これらのパターンにアンカーを組み合わせることで、繰り返される単語が文字列の先頭や末尾にのみマッチするように、マッチの位置をさらに制御できます。

question mark

正規表現パターン (ab)+ は何にマッチしますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

グルーピング、量指定子、アンカー

パターンの一部をグループ化し、繰り返し回数を指定し、文字列内でマッチが発生する位置を定義することは、強力な正規表現を記述するために不可欠なスキルです。Python では、括弧 () を使用してグループを作成し、複数の文字を単一の単位として扱うことができます。*+?、および {n,m} のような量指定子は、文字やグループが何回出現するかを制御します。^$ のようなアンカーは、文字列の先頭や末尾にマッチする特別な記号です。

括弧によるグループ化

括弧によるグループ化を使うと、個々の文字ではなくサブパターン全体に量指定子を適用できます。例えば、(ab)+ab の並びが1回以上繰り返される部分にマッチします。

量指定子

  • アスタリスク(*)は「0回以上」
  • プラス記号(+)は「1回以上」
  • クエスチョンマーク(?)は「0回または1回」
  • 波括弧({n,m})は最小(n)回から最大(m)回までを指定

アンカー

アンカーはマッチする文字ではなく、文字列内の位置を示すマーカーです。キャレット(^)は先頭を、ドル記号($)は文字列の末尾を表します。

1234567
import re text = "hello hello world world world" pattern = r"(world\s+)+" matches = re.findall(pattern, text) print(matches)

ステップごとの分析:グループ化と量指定子

この例では、正規表現パターン (world\s+)+ を使って、world という単語がスペースとともに繰り返される部分を検索しています。このパターンの動作を分解してみましょう:

  • 括弧 () により world\s+グループ化し、world とその後の空白を1つの単位として扱います;
  • グループ直後のプラス記号 + の量指定子は、このグループが1回以上連続して現れることを意味します;
  • その結果、このパターンは world がスペースを挟んで繰り返されるすべての並びにマッチし、最長のそのような並びを取得します。

グループ化は、量指定子を文字列の並びやマッチした部分を後で利用するためにキャプチャしたい場合に特に有用です。量指定子は、単一の文字、文字クラス、またはグループ全体に適用できます。これらのパターンにアンカーを組み合わせることで、繰り返される単語が文字列の先頭や末尾にのみマッチするように、マッチの位置をさらに制御できます。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  1
some-alt