2017-04-17 2 views
0

ユーザーはファイル拡張子を入力する必要があり、有効かどうかを確認したいと思います。そうでなければ、私はそれを再入力するように頼みたい。ユーザーの入力が有効なファイルの拡張子であるかどうかを正規表現で確認する方法は?

私は入力がこれらのルールに一致するべきであると考えています:

  • それは、ドット(またはそれなし)の後にドット
  • と他のすべてのシンボルを開始することができ、単に数字と文字
することができ

は、私はこのような正規表現を試みた:

r'(\.)?\w+' 

をしかし、それが一致するようidが私のために動作しません。英数字とアンダースコアのみを含む文字列で、開始時にドットを必要とせず、許可されている以外の文字を入力できるようにします。

+0

"私にとってはうまくいかない"という意味を説明してください。 –

+2

're.match(r '\。\ w + $'、s)'を使って、ドットで始まる文字列とマッチし、次に単語の文字を持つ文字列とマッチさせてみてください。 '\ w'は文字、数字、' _'と一致することに注意してください。 '[^ \ W_]'で '_'を引くことができます。 –

+2

ここで練習しようhttp://regexr.com/ –

答えて

1

私は入力がこれらのルールと一致する必要があると考えています。ドットで始めることができます。ドットの後の(またはドットなしの)他のすべてのシンボルは、ちょうど数字と文字にすることができます。パターンで文字列全体にマッチする

注意、あなたはアンカー、^re.matchでは必要ありません)と$を使用する必要があります。 Python 3.x re.fullmatchを使用している場合、それらは必要ありません。

次の点:.を必須にする必要がある場合は、ドットパターンの後に?量子を削除する必要があります。これは、1回または0回のオカレンスと一致します。

また、英数字記号のみを一致させるには、アンダースコアと一致するので、\wを使用しないでください。

あなたは、その後、文字列は、ドットで始まるかどうかを確認するために

(修飾子/ Pythonのバージョンが使用されているもののみサポートASCII文字と数字に)
re.match(r'\.[^\W_]+$', s) 

または

re.match(r'\.[a-zA-Z]+$', s) 

を使用することができます文字列の最後まで1文字以上の数字があります。

関連する問題