0Pricing
Learn AI with Python · レッスン

正規表現パターンと文字クラス

\d、\w、\s、.、^、$、+、*、?、{n,m}、文字クラス [a-z]、否定 [^...] を学びます。

「正規表現パターンと文字クラス」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

テキスト AI で正規表現が重要な理由

テキスト AI は、整理されていない生のテキストから始まります。正規表現(regex)は、電話番号、日付、ハッシュタグ、URL などのパターンを見つけて抽出するための簡潔な言語です。モデルに入力する前に、テキストをクリーニングして構造化できます。

このコースでは、パターン、reモジュール、グループ、そして実際のテキストクリーニングパイプラインについて学びます。

リテラル文字

最も単純なパターンはリテラルテキストです。指定した文字と完全に一致します。正規表現では、デフォルトで大文字と小文字が区別されます。

catは「the cat sat」の中の「cat」には一致しますが、「Cat」には一致しません。

import re

print(re.findall("cat", "the cat sat on a cat mat"))
# ["cat", "cat"]

ドットメタ文字

ドット.は、改行を除く任意の 1 文字に一致します。ワイルドカードとして機能します。

c.tは「cat」、「cot」、「c9t」に一致します。つまり、c、1 文字、t の順で構成されるものすべてに一致します。

import re

print(re.findall("c.t", "cat cot cut c@t"))
# ["cat", "cot", "cut", "c@t"]

数字、単語、空白のクラス

省略形の文字クラスを使うと、よく使う文字グループを表せます。

  • \d — 数字(0-9)
  • \w — 単語文字(英字、数字、アンダースコア)
  • \s — 空白文字(スペース、タブ、改行)
import re

print(re.findall("\d", "a1b2c3"))     # ["1", "2", "3"]
print(re.findall("\w", "a_1!"))        # ["a", "_", "1"]
print(re.findall("\s", "a b\tc"))      # [" ", "\t"]

否定文字クラス

大文字のバージョンは、文字クラスを否定します。

  • \D — 数字ではないもの
  • \W — 単語文字ではないもの
  • \S — 空白文字ではないもの
import re

print(re.findall("\D", "a1b2"))   # ["a", "b"]
print(re.findall("\S", "a b c"))  # ["a", "b", "c"]

[ ] によるカスタム文字セット

角かっこを使って独自のセットを定義できます。角かっこ内に列挙した文字のうち、いずれか 1 文字に一致します。範囲はハイフンで指定します。

  • [aeiou] — いずれかの母音
  • [A-Za-z] — いずれかの英字
  • [0-9] — いずれかの数字(\dと同じ)
import re

print(re.findall("[A-Za-z]", "ab12CD"))   # letters only
print(re.findall("[aeiou]", "hello"))      # ["e", "o"]

[^ ] による否定セット

角かっこの内側にキャレットを置くと、セットが否定されます。列挙されていない任意の文字に一致します。

[^abc]は、a、b、c 以外のすべてに一致します。(角かっこの外側にあるキャレットはアンカーとして機能します。次に説明します。)

import re

print(re.findall("[^aeiou ]", "hello world"))
# consonants: ["h", "l", "l", "w", "r", "l", "d"]

アンカー: ^ と $

アンカーは文字ではなく位置に一致します。

  • ^ — 文字列(または行)の先頭
  • $ — 文字列(または行)の末尾

^Helloは、テキストが「Hello」で始まる場合にのみ一致します。

import re

print(bool(re.search("^Hello", "Hello world")))  # True
print(bool(re.search("world$", "Hello world")))  # True
print(bool(re.search("^world", "Hello world")))  # False

量指定子: + * ?

量指定子は、直前の項目を何回繰り返すかを指定します。

  • + — 1 回以上
  • * — 0 回以上
  • ? — 0 回または 1 回(省略可能)
import re

print(re.findall("\d+", "abc 123 de 45"))   # ["123", "45"]
print(re.findall("ab*", "a ab abb"))         # ["a", "ab", "abb"]
print(re.findall("colou?r", "color colour")) # both match

範囲量指定子 {n,m}

波かっこを使うと、回数を正確に指定したり範囲で指定したりできます。

  • {3} — ちょうど 3 回
  • {2,4} — 2 回から 4 回
  • {2,} — 2 回以上

郵便番号や電話番号の一部など、長さが決まった項目に便利です。

import re

print(re.findall("\d{3}", "12 345 6789"))    # ["345", "678"]
print(re.findall("\d{2,4}", "1 22 3333 55555"))

要素を組み合わせる

実際のパターンでは、クラス、セット、アンカー、量指定子を組み合わせます。次のパターンは、555-123-4567 のような単純な米国の電話番号に一致します。

\d{3}-\d{3}-\d{4} — 3 桁の数字、ハイフン、3 桁の数字、ハイフン、4 桁の数字です。

import re

text = "Call 555-123-4567 or 999-888-7777"
print(re.findall("\d{3}-\d{3}-\d{4}", text))
# ["555-123-4567", "999-888-7777"]

クイックチェック: 量指定子

連続する 1 桁以上の数字に一致させたいとします。

まとめ: パターンと文字クラス

これで、正規表現の基本要素が分かりました。

  • リテラルと.ワイルドカード
  • クラス\d \w \sと、それらの否定\D \W \S
  • カスタムセット[A-Za-z]と否定セット[^abc]
  • アンカー^と$
  • 量指定子+ * ?と範囲{n,m}

次は、Python のreモジュールの関数を扱います。

よくある質問

「正規表現パターンと文字クラス」レッスンは無料ですか?

はい。「正規表現パターンと文字クラス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「正規表現パターンと文字クラス」で何を学びますか?

\d、\w、\s、.、^、$、+、*、?、{n,m}、文字クラス [a-z]、否定 [^...] を学びます。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「正規表現パターンと文字クラス」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 正規表現パターンと文字クラス
  2. re モジュール:search、match、findall、sub
  3. キャプチャグループと名前付きグループ
  4. 正規表現による AI 向けテキストクリーニング
← Learn AI with Pythonに戻る