四、正则表达式:匹配开头与结尾
^ 限制匹配的内容必须从开头判断
$ 限制匹配的内容必须包含结尾
使用re.match()自带判断开头,但是不判断结尾,也就是即使在匹配字符前面部分符合限制条件,后面部分即使不服务,也有返回对象
例如:以下2种情况能匹配成功,第3种匹配失败
ret = re.match(r"\d{3}", "123")ret.group()ret = re.match(r"\d{3}", "12345678")ret.group()
#如果加上$,则判断结果不匹配ret = re.match(r"\d{3}$", "12345678")ret.group()
综合应用案例:
判断names中的字符串是否符合变量命名规则(首字母可以大写小写或者下划线_,不能为数字,不能包含#、!、?)
# coding = utf-8import renames = ["age", "age_1", "_age__", "____", "2_age", "age!", "ag#e"]def main():for name in names:ret = re.match(r"^[a-zA-Z_][a-zA-Z0-9_]*$",name) # ^可加可不加,match自带判断开头if ret:print("变量名%s符合命名规范,输出结果是:%s" % (name, ret.group()))else:print("变量名%s不符合命名规范,它在列表的第%s位" % (name, names.index(name)))if __name__ == "__main__":main()