四、正则表达式:匹配开头与结尾
^ 限制匹配的内容必须从开头判断
$ 限制匹配的内容必须包含结尾
使用()自带判断开头,但是不判断结尾,也就是即使在匹配字符前面部分符合限制条件,后面部分即使不服务,也有返回对象
例如:以下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-8
import re
names = ["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()