【Python入門】正規表現を使用した検索(初心者・忘れっぽい人向け)

こんにちは。

Python入門記事を書いて1週間たちました。1週間毎日更新するのは初めてです。そして、、入門記事とはいえ、毎日更新するのは本当に大変ですね。ブログに限らず毎日SNSに情報発信している方には頭が下がります。。

mami
これが実力。。

またこういう記事も自分のためにも増やしていこうと思いつつ、来週は作りたいものを作ろうかなぁと思います。

今日は正規表現について書いていきます。正規表現とは特殊文字を使用して柔軟な検索を行う事です。 文頭は「^」 、文末は「$」などの特殊文字を使用します。これも全く覚えられないんですよね。そして知らない事も沢山。。この記事は最後なのにめっちゃ中途半端に終わりました。こんなの使わんだろ、みたいなのが結構。。よく使うものをもう少し精査出来れば良かったです。。

mami
これが実力。。(Part2)

ぼちぼち修正していきます。

Pythonの標準ライブラリに正規表現扱える「reモジュール」があります。そのモジュールのsearch()、match()を紹介します。

正規表現に使用する特殊・定義文字

Pythonの正規表現によく使用する特殊文字を表にまとめます。

特殊文字説明
.改行以外の任意の1文字a.c:abcなど
^文頭^abc:abcdef
$文末def$:abcdef
*直前の文字の0回以上の繰り返しabc*:ab,abc, abcc
+直前の文字の1回以上の繰り返しabc+:abc,abcc
?直前の文字の0または1回の繰り返しabc?
{m,n}m〜n回の繰り返しa{2, 4}:aa, aaa, aaaa
[文字クラス]文字クラスのいずれかの文字[abc]:abcのどれか
[0-9]:0~9のどれか
[a-zA-Z]:小大文字アルファベット
正規表現1|正規表現2正規表現1または規表現2abc(c|d):abcc,abcd
(正規表現)正規表現をグループ化(abc)+:abcabc
定義済み文字説明
\tタブ
\r改行(CR)
\n改行(LR)
\d数字
\D数字以外
\s空白文字
\S空白文字以外
\w単語構成する文字
[a-zA-Z0-9_]
\W単語構成する文字以外
\\「\」

search関数

文字列がマッチするかを調べるのは「search関数」です。

re.search(pattern, string, flags=0)

pattern:マッチする正規表現
string:検索対象の文字列
flags:検索条件を設定するフラグ

. 改行以外の任意の1文字

>>> import re
>>> s = 'Done is better than perfect.'
>>> re.search('.erfect',s)
<_sre.SRE_Match object; span=(20, 27), match='perfect'>

^$ 文頭文末

>>> import re
>>> s = 'Done is better than perfect.'

>>> re.search('^Done',s)
<_sre.SRE_Match object; span=(0, 4), match='Done'>

>>> re.search('perfect.$',s)
<_sre.SRE_Match object; span=(20, 28), match='perfect.'>

match関数

文字列の先頭でマッチするかを調べる「match関数」もあります。

re.match(pattern, string, flags=0)

pattern:マッチする正規表現
string:検索対象の文字列
flags:検索条件を設定するフラグ

>>> import re
>>> s = 'Done is better than perfect.'
>>> re.match('Done',s)
<_sre.SRE_Match object; span=(0, 4), match='Done'>
>>> re.match('perfect',s)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)