データ分析実践
中級問題チェック

問題 32 /40

正規表現のパターンマッチングで使う特殊文字について、正しい説明はどれか。

選択 1

\d 数字 ^ 先頭 + 1文字以上の繰り返し ? 0回か1回の繰り返し

選択 2

\w 数字 $ 先頭 . 任意の一文字 {m} m回の繰り返し

選択 3

\s 空白文字 + 0文字以上の繰り返し [...] 指定したいずれかの文字 (x|y) xかyの選択

選択 4

\W 英数字以外 $ 末尾 * 0文字以上の繰り返し ^[...] 指定したいずれかの文字以外

解説

選択肢1が正解です。 【選択肢1】 \d 数字 ^ 先頭 + 1文字以上の繰り返し ? 0回か1回の繰り返し 正しい説明です。 【選択肢2】 \w 数字 $ 先頭 . 任意の一文字 {m} m回の繰り返し 誤った説明です。 「\w」は数字ではなく任意の英数字です。 数字は「\d」です。 また、「$」は末尾で、先頭は「^」です。 【選択肢3】 \s 空白文字 + 0文字以上の繰り返し [...] 指定したいずれかの文字 (x|y) xかyの選択 誤った説明です。 「+」は1文字以上の繰り返しです。 0文字以上の繰り返しは「*」です。 【選択肢4】 \W 英数字以外 $ 末尾 * 0文字以上の繰り返し ^[...] 指定したいずれかの文字以外 誤った説明です。 指定したいずれかの文字以外は「^[...]」ではなく「[^...]」です。 正規表現でよく使う特殊文字は以下となります。 ■ 特殊文字
■ シーケンス
例えば次のように、文字列から電話番号を抽出する場合は、reモジュールのfindall関数を使います。 import re sample = '住所 横浜市 電話 111-111-1111, 住所 名古屋市 電話 222-222-2222' re.findall('[0-9]{3}-[0-9]{3}-[0-9]{4}', sample) ▶︎ ['111-111-1111', '222-222-2222'] [0-9]が0123456789の集合で、{3}が3回の繰り返しです。 一部の文字を置き換える場合は、reモジュールのsub関数を使います。 import re regex = re.compile(r'p+') regex.sub('X', 'apple') ▶︎ 'aXle' re.compile(r'p+')で正規表現のオブジェクトを生成し、そのオブジェクトを使って置き換えています。「p+」が「pの1回以上の繰り返し」を指すため、appleの「pp」が「X」に置き換わります。 (公式書籍 p.235)