文字列が有効な変数であるかどうかを判断するスクリプトを使用しています。とても基本的なことですが、正規表現の使い方がわかりません。
だから基本的に私は欲しい:
A-Z
a-z
0-9
no whitespace anywhere
no special char except _
それは可能ですか?これは私が試したものです:
re.match("[a-zA-Z0-9_,/S]*$", char_s):
次のようなパターンが機能するはずです。
^[a-zA-Z_][a-zA-Z0-9_]*$
またはもっと簡単に:
^(?!\d)\w+$
どちらの場合も、数字で始まらない限り、1 つ以上の文字、数字、またはアンダースコアで構成される文字列に一致します。
2 番目の(?!…)
パターンの は、否定的な先読みアサーションです。最初の文字が数字ではないことを保証します。詳細については、マニュアルを参照してください。
re.match(r"^[^\W\d]\w*$", char_s):
単語の\w
文字クラスは に相当し[a-zA-Z0-9_]
ます。識別子は数字で始めることはできない[^\W\d]
ため、最初の文字と\w*
残りの文字が一致します。