模拟项目的正则表达式Python学校类名

时间:2015-01-26 11:45:47

标签: python regex


我在python有一个项目,我想在密歇根高中的学校里为我的班级分配名字。我所拥有的课程是' 1B,2B和3B'当用户输入他们的姓名和课堂名称时,他们的课程将被验证以确保其在特定格式中是正确的,#1; 2 OR 3',' B' - 所以他们不能写' 4B'或者' 2A'因为那些类不存在。
到目前为止,我已经开发了这段代码:

while True: # This starts the whole of the while loop. 
    class_name = str(input("Please enter your class name >>"))
    if re.match("1A" "2A" "3A", class_name):
        print("Incorrect. Please write your class name again.")
    else:
        print("Your class name has been accepted")

如何验证class_name变量,以便它可以匹配教室名称' 1A,2A或3A?'谢谢, 泰勒海沃德。

1 个答案:

答案 0 :(得分:1)

你的逻辑是倒退的(你的语法也是错误的)。您不想测试一组非法类名(该组太大) - 您想要测试一组 legal 名称和如果测试失败则重复。

while True: # This starts the whole of the while loop. 
    class_name = input("Please enter your class name >>") # str() is unnecessary
    if class_name not in {"1B", "2B", "3B"}:
        print("Incorrect. Please write your class name again.")
    else:
        print("Your class name has been accepted")
        break  # Exit the while loop

正则表达式也是可能的:

    if not re.match("[123]B$", class_name):

请注意$ anchor以确保匹配在B之后结束,否则正则表达式将接受2BC之类的输入(仅re.match()锚点匹配到字符串的开头,而不是结束。)