はじめに
お仕事とかお勉強とかでコードを眺めている時、どうしてもre.search関数やre.match関数で出てくる正規表現がうまく読み取れず困っているので、個人的に最低限これだけは知っておきたいって思った特殊文字をまとめてみます。
そもそも「正規表現」とは
文字列のパターンを定義するための記法のこと。
これを利用し、そのパターンに合う文字列を探したり置換したりすることができます。
なお、Pythonの場合は「re」モジュールを使用します。
一般的な文字列検索の検索条件では指定しにくいような複雑なパターン(例:電話番号、特定ドメインのメールアドレス)でも定義することができるというのがいいところ。
よくみる特殊文字まとめ
| 特殊文字 | 意味 |
|---|---|
| \d | 数字 |
| \D | 数字以外 |
| \s | 空白文字 |
| \S | 空白文字以外 |
| \w | 任意の英数字 |
| \W | 英数字以外 |
| . | 任意の1文字 |
| ^ | 先頭 |
| $ | 末尾 |
| * | 0文字以上の繰り返し |
| + | 1文字以上の繰り返し |
| ? | 0回か1回の繰り返し |
| {m} | m回の繰り返し |
| {m, n} | m回以上、n回以下の繰り返し |
| [...] | 指定したいずれかの文字 |
| [^...] | 指定したいずれかの文字以外 |
| (x|y) | xかyのどちらか |
よくみる使用例
- 電話番号
>>> import re
>>> text = 'debudesu 26 080-1234-5678 example@test.com'
>>> phone_no = re.findall(r'\d{2,4}-\d{2,4}-\d{4}', text)
>>> print(phone_no)
['080-1234-5678']
>>>
ハイフン付き、10桁か11桁に絞るとこんな感じですかね。
- メアド
>>> import re
>>> text = 'debudesu 26 080-1234-5678 example@test.com'
>>> mail_address = re.findall(r'[a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$', text)
>>> print(mail_address)
['example@test.com']
>>>
メアドの使用可能文字はとりあえずGmailのもので書いてみました。
+とかいけるんですね。
ちなみに、{2,}のように記述すると、2回以上の繰り返しという意味になります。
>>> import re
>>> text = 'debudesu 26 080-1234-5678 example@test.com'
>>> test = re.findall(r'\d{2,}', text)
>>> print(test)
['26', '080', '1234', '5678']
>>>
まとめ
ほんとに最低限しかまとめてませんが、これだけでも結構書くことができるようになった気がします。![]()
このくらいはなんも見ないで書けるようになったらかっこよさそうですね。
ちなみに上級編を書く予定はございません。
上級編と呼べる良いサイトを見つけたので貼っておきます。
上級編
余談
ついにPython実践試験を申し込んでしまったので(2/22受験)勉強しているのですが、如何せん暗記力が無く困っております。ヘルプミー