あなただけの文字列が.jpg
または.png
で終わっていないことを気にしている場合は、これを使用することができます正規表現に文字列全体を強制的に使用させる必要があるかもしれません。 Pythonの正規表現の風味が最もの一つであるため、
^\w+(?:\.\w+)+$(?<!\.jpg)(?<!\.png)
あなたはおそらく動作しないでしょう(?<!\.jpg|\.png)
を、使用しようとした:あなたは、他の検証のための正規表現を使用している場合は、同じように、何かがより精巧な場合がありますlookbehindsに関しては制限的です。 PHPとRuby 1.9以降は、それぞれの選択肢が固定長であるため、それを受け入れます。彼らはと同じである必要はありません同じの長さ; (?<!\.jpg|\.jpeg|\.png)
も機能します。 (?<!\.(?:jpg|jpeg|png))
のように、ドットを除外しようとしないでください。交互は見た目の最上位レベルになければならない。
コンパイル時にもう少し作業をして、見た目のヒントが一致する必要がある可能性のある最大文字数を判断するため、Javaは因数分解バージョンを受け入れます。 lookbind式はかなり単純でなければならず、+
または*
の数量子を使うことはできません。最後に、.NETとJGSoftのフレーバーは、lookbehindには何の制限もありません。しかし、Pythonは、lookbehindが一致する必要がある文字の正確な数を把握し、失敗したときにその謎めいたエラーメッセージを生成する、非常に単純な試みを行います。
素晴らしい作品!優れた – yash