Pythonの正規表現で、英数字などチェックする例です。
目次(リンク)
正規表現で文字列をチェックする
英字や英数字などをチェックしてみたいと思います。
英字かどうかチェックする
reモジュールのcompileで、()内に書いたパターンをコンパイルします。
[a-z]はaからzまでの半角小文字のアルファベット、+は、1つ以上続くという意味です。
例えば、cからfまでの文字のどれかが1つ以上なら、[c-f]+。
TrueかFalseで結果を返すなら、次のように書きます。
1 2 3 4 5 6 |
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だけになります。
小文字または大文字なら、[a-zA-Z]。
1 2 3 4 5 6 |
import re pattern = re.compile(r'[a-zA-Z]+') test_str = "Example" print(bool(pattern.fullmatch(test_str))) #True |
英数字かどうかチェックする
半角英数の場合どう書くか。
先ほどの英数の例を見れば何となく分かるかもしれません。
次のように書けば、半角英数のどれかが含まれている場合、Trueが返ってきます。
1 2 3 4 5 6 |
import re pattern = re.compile(r'[a-zA-Z0-9]+') test_str = "Example123" print(bool(pattern.fullmatch(test_str))) #True |
正規表現を組み合わせて使ってみる
少し組み合わせて使う例です。
入力フォームによくあるメールアドレスのチェックです。
メールアドレスをチェックする
英字だけのメアドと、英数字の場合を書いてみました。
1 2 3 4 5 6 7 8 9 10 11 12 |
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つ以上。
ドット「.」の前のバックスラッシュは、正規表現としての働きをさせないためのエスケープです。
英数字のところで紹介した感じで、[a-z0-9]+とすれば数字の交じったメールアドレスもチェックできます。
まとめ:Pythonの正規表現で、英数字、メールアドレスなどをチェック
英字や英数字、メールアドレスなど、正規表現でチェックしてみました。
現場で正規表現を使う機会が少なく、今まで正規表現のコードをあまり書いてこなかったので、メールアドレスのチェックを考えるだけでもすごく勉強になります。