Некоторые символы в строке специальных символов имеют особое значение в регулярных выражениях и должны быть экранированы. Вы получаете синтаксическую ошибку, потому что вы включили "
в середине строки, очерченной двойными кавычками, поэтому Python завершает обработку строки там, а затем задыхается от мусора, который он видит впоследствии. Попробуйте следующее:
elif not re.match(r"[~\[email protected]#\$%\^&\*\(\)_\+{}\":;'\[\]]", password):
print "Invalid entry"
continue
Я использовал строковый строковый литерал, который вы всегда должны использовать в регулярных выражениях. Я избежал символов, которые нужно было экранировать, и немного упростил ваше выражение, так как начало ^
и конец $
строковых маркеров не нужны - как только будет выполнено одно совпадение, оно вернет True и пропустит следующее код.
В случае сомнений избегайте :)
и вы не получаете синтаксическую ошибку от этого? – MattDMo
Я получаю один –