Saki0506
@Saki0506 (さき おぐら)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Pythonの正規表現の引数について

Q&A

Closed

解決したいこと

Pythonの正規表現の引数について質問があります。
以下のコードでsearchメゾットの2つ目の引数としてpassword(ここではい調べたい値)を入れるとどのような意味があるのでしょうか?
r'[A-Z]'の部分は理解できるのですがなぜpasswordの引数を渡しているか知りたいです。
またここの文法の部分も教えていただけると助かります。
return True if m else False
mがTrueかどうかを判断しているのはわかるのですがこのような書式で書かれているのをみたことがありません。文法を理解して使えるようになりたいので教えていただけると嬉しいです。

該当するソースコード

def has_upper_letter(password):
    """
    パスワードに英字大文字が含まれるかをチェックします。
    Args:
        チェック対象のパスワード
    Returns:
        英字大文字を含んでいればTrue
    """
    m = re.search(r'[A-Z]', password)
    return True if m else False

自分で試したこと

ネットやPythonの本などで色々、調べましたが該当するものが見つかりませんでした。

0

1Answer

m = re.search(r'[A-Z]', password)

passwordの中から正規表現パターン[A-Z]にマッチする部分を探しています。
大文字アルファベットが含まれているかどうかを検査するのが目的です。
マッチするものがあればmには対応するマッチオブジェクトが代入され、1つも無ければNoneが代入されます。

return True if m else False

True if m else False
式1 if 条件式 else 式2
の形の三項演算子です。条件式が真なら式1の値、偽なら式2の値が、この式の値となります。
したがって、もしmが真なら(この場合マッチオブジェクトが代入されていれば)この式の値はTrueとなり、偽(re.searchNoneを返した場合)ならこの式の値はFalseとなります。その式の値をreturnしています。

つまり、この関数からは、passwordに大文字アルファベットが含まれていればTrue、そうでなければFalseが返されることになります。

1Like

Comments

  1. @Saki0506

    Questioner

    ありがとうございます

Your answer might help someone💌