我正在尝试制作一个程序,让用户在控制台中键入任何内容,如果在下面的代码中指定了任何特定的特殊字符,它将返回"真的";。如果它不包含任何特殊字符,那么它将返回";错误";。我在第三行代码中似乎有问题,特别是在枚举特殊字符的地方(字符串检查=重新编译('!"#$%&'((*+,-./:<>[]^_'(,我不太明白为什么。
这是代码:
import re
def hasSpecialCharacters(s):
stringCheck = re.compile('!"#$%&'()*+,-./:;<=>?@[]^_')
if (stringCheck.search(s) == None):
print("False")
else:
print("True")
def main():
print("Écriver une phrase.")
trueOrFalse = str(input("=> "))
hasSpecialCharacters(trueOrFalse)
main()
这是长错误代码:
Traceback (most recent call last):
File "c:UsersvautoDropboxPCDocumentsALGO CCNBTravail 2 (Programme B).py", line 25, in <module>
main()
File "c:UsersvautoDropboxPCDocumentsALGO CCNBTravail 2 (Programme B).py", line 18, in main
hasSpecialCharacters(trueOrFalse)
File "c:UsersvautoDropboxPCDocumentsALGO CCNBTravail 2 (Programme B).py", line 4, in hasSpecialCharacters
stringCheck = re.compile('!"#$%&'()*+,-./:;<=>?@[]^_')
File "C:UsersvautoAppDataLocalProgramsPythonPython39libre.py", line 252, in compile
return _compile(pattern, flags)
File "C:UsersvautoAppDataLocalProgramsPythonPython39libre.py", line 304, in _compile
p = sre_compile.compile(pattern, flags)
File "C:UsersvautoAppDataLocalProgramsPythonPython39libsre_compile.py", line 764, in compile
p = sre_parse.parse(p, flags)
File "C:UsersvautoAppDataLocalProgramsPythonPython39libsre_parse.py", line 948, in parse
p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
File "C:UsersvautoAppDataLocalProgramsPythonPython39libsre_parse.py", line 443, in _parse_sub
itemsappend(_parse(source, state, verbose, nested + 1,
File "C:UsersvautoAppDataLocalProgramsPythonPython39libsre_parse.py", line 671, in _parse
raise source.error("multiple repeat",
re.error: multiple repeat at position 10
您必须键入
stringCheck=re.compile('[!"#$%&'()*+,-./\:;<=>?@[]^_]')
错误是由于regex使用了特殊字符,为了匹配该特殊字符,必须在字符之前设置。