[Python]特定の文字列で始まる(始まらない)文字列を抽出する
正規表現で^記号は文字列の先頭を表すため、これを正規表現パターンに利用する。以下の例では、複数の文字列からなるリストから、リスト内包表記を使用して、指定した正規表現パターンにマッチする(しない)要素を取り出している。
>>> import re
>>> ss = ['石見舞菜香', '鈴木みのり', '瀬戸麻沙美', 'のぐちゆり', '和多田美咲']
>>> # 「美」で終わる氏名
>>> [s for s in ss if re.search('美$', s)]
['瀬戸麻沙美']
>>> # 「美」で終わらない氏名
>>> [s for s in ss if not re.search('美$', s)]
['石見舞菜香', '鈴木みのり', 'のぐちゆり', '和多田美咲']
>>> # 「美」を含むが「美」で終わらない氏名
>>> [s for s in ss if re.search('美.+$', s)]
['和多田美咲']
ルックアラウンド式(lookaround expression)を使うこともできる。
>>> # 「美」で終わる氏名 ※肯定的な後読み
>>> [s for s in ss if re.search('(?<=美)$', s)]
['瀬戸麻沙美']
>>> # 「美」で終わらない氏名 ※否定的な後読み
>>> [s for s in ss if re.search('(?<!美)$', s)]
['石見舞菜香', '鈴木みのり', 'のぐちゆり', '和多田美咲']
ルックアラウンド式については、以下のページの「Lookaround の概要」を参照のこと。
