プログラミングを勉強するサイトです。今まで使ってこなかった言語を新しく勉強し始めたのをきっかけに、プロブロを始めました。

【Python】正規表現モジュールreで、文字列をチェックする

【Python】正規表現モジュールreで、文字列をチェックする

 

Pythonの正規表現で、英数字などチェックする例です。

正規表現で文字列をチェックする

英字や英数字などをチェックしてみたいと思います。

英字かどうかチェックする

reモジュールのcompileで、()内に書いたパターンをコンパイルします。

[a-z]はaからzまでの半角小文字のアルファベット、+は、1つ以上続くという意味です。[br num=”1″]例えば、cからfまでの文字のどれかが1つ以上なら、[c-f]+。

TrueかFalseで結果を返すなら、次のように書きます。

import re

pattern = re.compile(r'[a-z]+')
test_str = "example"

print(bool(pattern.fullmatch(test_str)))	#True

もしも「+」がなかったら、2文字以上の文字列なのでfullmatchだとFalseになります。

 

今度は小文字と大文字が混在した場合。

[A-Z]と書くと、大文字のAからZだけになります。[br num=”1″]小文字または大文字なら、[a-zA-Z]。

import re

pattern = re.compile(r'[a-zA-Z]+')
test_str = "Example"

print(bool(pattern.fullmatch(test_str)))	#True

英数字かどうかチェックする

半角英数の場合どう書くか。

先ほどの英数の例を見れば何となく分かるかもしれません。[br num=”1″]次のように書けば、半角英数のどれかが含まれている場合、Trueが返ってきます。

import re

pattern = re.compile(r'[a-zA-Z0-9]+')
test_str = "Example123"

print(bool(pattern.fullmatch(test_str)))	#True

正規表現を組み合わせて使ってみる

少し組み合わせて使う例です。

入力フォームによくあるメールアドレスのチェックです。

メールアドレスをチェックする

英字だけのメアドと、英数字の場合を書いてみました。

import re

#英字だけ
pattern = re.compile(r'[a-z]+@[a-z]+\.co\.jp')
test_str = "test@hoge.co.jp"

#英数
pattern2 = re.compile(r'[a-z0-9]+@[a-z0-9]+\.co\.jp')
test_str2 = "test123@hoge123.co.jp"

print(bool(pattern.fullmatch(test_str)))   #True
print(bool(pattern2.fullmatch(test_str2))) #True

[a-z]+で、a~zのいずれかが1つ以上。[br num=”1″]ドット「.」の前のバックスラッシュは、正規表現としての働きをさせないためのエスケープです。

英数字のところで紹介した感じで、[a-z0-9]+とすれば数字の交じったメールアドレスもチェックできます。

まとめ:Pythonの正規表現で、英数字、メールアドレスなどをチェック

英字や英数字、メールアドレスなど、正規表現でチェックしてみました。

現場で正規表現を使う機会が少なく、今まで正規表現のコードをあまり書いてこなかったので、メールアドレスのチェックを考えるだけでもすごく勉強になります。

 

この記事をシェアする

記事一覧へ戻る

コメント Comments

コメント一覧

コメントはありません。

コメントする

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

トラックバックURL

https://pro-blo.com/python/check-text-with-regex/trackback/

関連記事 Relation Entry