書きながら覚えよう!Pythonで正規表現を使う方法【初心者向け】
初心者向けにPythonで正規表現を使う方法について解説しています。正規表現を活用することで、自然言語処理と呼ばれるAI技術を用いた処理を行うこともできます。普段見慣れないような特殊な書き方をするので、実際に書きながら理解すると良いでしょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
今回は、Pythonで正規表現を使う方法を解説します。
普段見慣れない文字を入力していますが、実際に書いてみて慣れていきましょう。
なお本記事は、TechAcademyのPythonオンライン講座の内容をもとにしています。
Pythonの正規表現とは
正規表現とは、文字列を1つのパターン化した文字列で表現する表記法です。
正規表現を使用して、文字列をパターン化した文字列に置き換えることで、文字列の検索や置換え、そして自然言語処理と呼ばれる広義の意味でのAI技術の基礎的な処理を行うことができます。
メタ文字
正規表現において、パターン化した文字列のことをメタ文字と言います。
★は文字列を意味します。
メタ文字 | 説明 | 指定例 | 合致する |
. | 任意の一文字 | a.c | abc, acc, aac |
^ | 行の先頭 | ^abc | abcdef |
$ | 行の末尾 | abc$ | defabc |
* | 0回以上の繰り返し | ab* | a, ab, abb, abbb |
+ | 1回以上の繰り返し | ab+ | ab, abb, abbb |
? | 0回または1回 | ab? | a, ab |
{m} | m回の繰り返し | a{3} | aaa |
{m,n} | m〜n回の繰り返し | a{2, 4} | aa, aaa, aaaa |
[★] | ★のどれか1文字 | [a-c] | a, b, c |
★|★ | ★のどれか | a|b | a, b |
特殊シーケンス
よく利用される正規表現のパターンは、特殊シーケンスと呼ばれます。
特殊シーケンスは、(バックスラッシュ)を先頭に記載します。
特殊シーケンス | 説明 | 同じ意味の正規表現 |
d | 任意の数字 | [0-9] |
D | 任意の数字以外 | [^0-9] |
s | 任意の空白文字 | [tnrfv] |
S | 任意の空白文字以外 | [^tnrfv] |
w | 任意の英数字 | [a-xA-Z0-9_] |
W | 任意の英数字以外 | [a-xA-Z0-9_] |
A | 文字列の先頭 | ^ |
Z | 文字列の末尾 | $ |
Pythonで正規表現を使う方法
正規表現を使ったPythonの自然言語処理にはいくつか手法があります。
今回は、import reと書いてreモジュールをimportして正規表現を使用します。
Pythonでimportを使う方法について解説している記事も合わせてご覧ください。
具体的には正規表現を使って文字列検索を行います。
文字列検索にはreモジュールのsearchメソッドを利用します。
searchメソッドの利用方法は、次のような文法で使用します。
re.search(検索するメタ文字,検索文字列)
Pythonで正規表現を書いてみよう
今回は、文章の中に数字のパスワードが潜んでいると仮定します。
今回は1行程度の文章ですが、実際は1冊の本の中からメタ文字で指定した目的の文字を検索するために使用します。
これを自然言語処理と言います。
数字を検索するプログラムソースコード
import re match = re.search(r'd+', 'For a cybersecurity focus, you must add a sound knowledge of networking, exposure to security tools, and an und2018erstanding of Python programming language.”') print('password:', match.group(0))
表示結果
('password:', '2018')
以下でソースコードの処理について詳しく説明しています。
1行目のimport reではreモジュールをimportしています。
2行目のmatch = re.search(r’d+’,’文字列’)では、文字列内のr’d+’(数字)をre.search(探して)、matchに代入しています。
3行目のmatch.group(0)では、matchに代入した値のうちに、.group(0)で検索数字として適合した部分を取り出すgroupメソッドを利用しています。
そして、print文で適合した部分をpassword:という文字列と一緒に表示します。
今回、文字列の中に隠れていた数字は「2018」でした。
今回は、Pythonで正規表現を使う方法を解説しました。
入門向けPythonの学習サイトも記事にしているので、学習したい方は参考にしてみてください。
この記事を監修してくれた方
中本賢吾(なかもとけんご) 開発実績:PHPフレームワークによるフランチャイズ企業向け会員制SNS。Shopifyによる海外進出用大規模ネットショップ構築。Vue.jsによる金融機関向け内部アプリ。AWSやLinuxハウジングサーバーでの環境構築。人工知能を利用した画像判別システム。小売チェーン店舗用スマホアプリ。Wordpressによる不動産チェーン店向け賃貸・売買仲介システム。基幹システム移管用データコンバートシステム。
小学生がUnityでオリジナルAndroidアプリをGooglePlayでリリース、NHK Whyプログラミング入賞、全国Programing Festival入賞、中学生がノーコードでSNS型PWAアプリリリースなど、ボランティアプログラミング教育活動行っている。 |
また、オンラインのプログラミングスクールTechAcademyではPythonを使って機械学習の基礎を学ぶPythonオンライン講座を開催しています。
初心者向けの書籍を使って人工知能(AI)や機械学習について学ぶことができます。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、習得することが可能です。
独学に限界を感じている方はぜひご覧ください。

プログラミングを独学していて、このように感じた経験はないでしょうか?
- ・調べてもほしい情報が見つからない
- ・独学のスキルが実際の業務で通用するのか不安
- ・目標への学習プランがわからず、迷子になりそう
テックアカデミーでは、このような
学習に不安を抱えている方へ、現役エンジニア講師とマンツーマンで相談できる機会を無料で提供
しています。
30分間、オンラインでどんなことでも質問し放題です。
「受けてよかった」と感じていただけるよう
厳しい試験を通過した講師
があなたの相談に真摯に向き合います。
「ただ気になることを相談したい」
「漠然としているがプロの話を聞いてみたい」
こんな気持ちでも大丈夫です。
無理な勧誘は一切ありません
ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)