こんにちは。
Python入門記事を書いて1週間たちました。1週間毎日更新するのは初めてです。そして、、入門記事とはいえ、毎日更新するのは本当に大変ですね。ブログに限らず毎日SNSに情報発信している方には頭が下がります。。
またこういう記事も自分のためにも増やしていこうと思いつつ、来週は作りたいものを作ろうかなぁと思います。
今日は正規表現について書いていきます。正規表現とは特殊文字を使用して柔軟な検索を行う事です。 文頭は「^」 、文末は「$」などの特殊文字を使用します。これも全く覚えられないんですよね。そして知らない事も沢山。。この記事は最後なのにめっちゃ中途半端に終わりました。こんなの使わんだろ、みたいなのが結構。。よく使うものをもう少し精査出来れば良かったです。。
ぼちぼち修正していきます。
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または規表現2 | abc(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.
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)
,s) <_sre.SRE_Match object; span=(20, 28), match='perfect.'>
match関数
文字列の先頭でマッチするかを調べる「match関数」もあります。
re.match(pattern, string, flags=0)
pattern:マッチする正規表現
string:検索対象の文字列
flags:検索条件を設定するフラグ
コメント