Python 無料で独習 026 Python正規表現を扱おう 

Python
この記事は約3分で読めます。

講義の冒頭で今西先生より
「みなさん、正規表現 という言葉をきいたことありますか?」
という質問があります。
正直生まれて初めて聞いた言葉でした。

例えて説明されてたのが、
文字列A
文字列B
文字列C
というのがあってその中で
これらに共通する部分があって
それらを記号で表現するのが
正規表現らしいです。

今西先生も
習うより、慣れろとおっしゃってますので
コードを書きながら学習したいと思います。

import re
sentence ='aaa abc aac abb abab 123 112 111'
pattern = 'ab.'
results = re.findall(pattern,sentence)
results
['abc', 'abb', 'aba']

まずimportします。
re
とはregexの略で正規表現に関するライブラリです。

文字列の入ったsentenceを定義。

検索する文字列のパターンを定義。
pattern = 'ab.'

でここで出てくのが
【正規表現の参照リスト】です。

文字によって予め決められた内容があって
. は[任意の一文字]

では実際に定義した文字列sentenceから
patternに当てはまる文字を抽出します。

reにもいろいろな関数がありまして
match():文字列の先頭がマッチするかチェック、抽出
search():先頭に限らずマッチするかチェック、抽出
findall():マッチする部分すべてをリストで取得

などがあります。
ここではfindall()を使います。

patternをいろいろ変えてみます。
今回は3文字で抽出していますので
4文字の文字列も3文字で抽出されます。

pattern = 'a.b'
results = re.findall(pattern,sentence)
results
['abb']



pattern = 'a..'
results = re.findall(pattern,sentence)
results
['aaa', 'abc', 'aac', 'abb', 'aba']

次はab|aaで抽出します。
先ほど出てきた
【正規表現の参照リスト】
をつかってみてみると
和集合(または)
となっています。実行してみます。

pattern = 'ab|aa'
results = re.findall(pattern,sentence)
results

results
['aa', 'ab', 'aa', 'ab', 'ab', 'ab']

ab aa 両方に当てはまる文字列を抽出できました。
そのほかにも
【正規表現の参照リスト】
の中の物をいろいろ試すと面白いです。


コメント

タイトルとURLをコピーしました