2016-07-29 9 views
0

テストストリングS. Sは、長さ又は等しい5 最初の文字が小文字のアルファベットよりも大きくなければなりません。 2番目の文字は正の数字です。 3番目の文字はアルファベットの小文字ではありません。 4番目の文字はアルファベットの大文字ではありません。 5番目の文字は大文字のアルファベットです。正規表現の例では、3

import re 

Regex_Pattern = r"^[a-z][0-9][^a-z][^A-Z][A-Z]" 

print(str(bool(re.search(Regex_Pattern, input()))).lower()) 

なぜ、コードのこの部分を使用して、私は文字列に一致することはできません。代わりにTrueを印刷するFalseを印刷するa0$?ZWe

+0

なぜそれが正規表現にマッチすると 'False'を出力しますか? はおそらく、あなたは '' 'input'ではなく' STR(ブール値(...))の結果にlower'を呼び出すためのもの? – DeepSpace

+0

実は、私は、その文字列の代わりに 'true'をの' false'をしたいです。私は 'a0 $?ZWe'が一致しないことを意味します。私の間違い。 –

+0

しかし、 '0'を正の数字とみなさない限り、一致します。その場合、 '[0-9]'を '[1-9]'に変更してください。 – DeepSpace

答えて

1

0は正の数字ではありませんが、あなたは正規表現でそれをマッチングしています。

[0-9]から[1-9]に変更してください。