import re
name1 = "a#pple" # 命名正确, a
name2 = "apple!"
ret = re.match("[a-zA-Z_][a-zA-Z0-9_]*", name1)
if ret:
print("命名正确,", ret.group())
else:
print("命名不正确")
明明命名不合法,为什么返回正确,而且只匹配到正确部分
- 因为默认match只会匹配开头(如果开头正确了,就等于匹配成功了)
严格的匹配开头与结尾
- 加上^和$(表示开头和结尾)
import re
name1 = "a#pple"
name2 = "apple!"
ret = re.match("^[a-zA-Z_][a-zA-Z0-9_]*$", name1)
if ret:
print("命名正确,", ret.group())
else:
print("命名不正确")