はじめに
pythonで空文字と記号が入力値に含まれているかをチェックし、それらをはじけるバリデーションを設けたい事がありました。本記事はその内容を備忘録形式でまとめたものになります。
環境
- Python 3.12.2
ソース
詳細はコメントで記載している通りです。
main.py
import re
# 入力値に記号が含まれているかを正規表現でチェック
def check_for_symbols(input_value):
# 入力値が空だった場合
if not input_value:
return False
# 全角と半角の記号を含む正規表現パターン
pattern = r'[!-\/:-@\[-`{-~、-〜「」【】『』()〔〕[]{}〈〉《》*?.,。・:;%!#@&<>\|¥$^*+〜]'
if re.search(pattern, input_value):
# 記号が見つかった場合
return False
# 記号が見つからなかった場合
return True
# 仮の入力値
input_value = "これはサンプルテキストです"
# 実行
if check_for_symbols(input_value):
print("すべての入力値に記号は含まれていません。")
else:
print(f"入力値が空かもしくは '{input_value}' に記号が含まれます。")
◆正規表現
re.search
メソッドを使用し、入力値にこのパターンにマッチする文字が含まれているかどうかをチェックしています。
pattern = r'[!-\/:-@\[-`{-~、-〜「」【】『』()〔〕[]{}〈〉《》*?.,。・:;%!#@&<>\|¥$^*+〜]'
実行 & 結果
下記コマンドで実行し結果を確認いたします。
python main.py
◆入力値に記号を含めていない場合
これはサンプルテキストです
を仮の入力値と想定し実行すると、以下のように記号が含まれないとのログが出力される事を確認。
すべての入力値に記号は含まれていません。
◆入力値に記号を含めた場合(空文字も同様)
これはサンプルテキストです!。
を仮の入力値と想定し実行すると、以下のように記号が含まれるとのログが出力される事を確認。
入力値が空かもしくは 'これはサンプルテキストです!。' に記号が含まれます。