我有一个程序,要求用户提供会话年,其格式应为20XX-20XX。这里的约束是它必须是一年,然后是下一年。例如。 2019-2020。
例如,
无效格式:
2019-2020
2018-2019
2000-2001
无效的发件人:
2019-2021
2000-2000
2019-2018
我正在尝试使用正则表达式验证此输入。
我的工作:
import re
def add_pages(matchObject):
return "{0:0=3d}".format(int(matchObject) + 1)
try:
a = input("Enter Session")
p = r'2([0-9]{3})-2'
p1= re.compile(p)
x=add_pages(p1.findall(a)[0])
p2 = r'2([0-9]{3})-2'+x
p3 = re.compile(p2)
l=p3.findall(a)
if not l:
raise Exception
else:
print("Authenticated")
except Exception as e:
print("Enter session. Eg. 2019-2020")
问题:
到目前为止,我还无法检索将验证此输入的单个正则表达式。我确实看过backreferencing in regex,但它只能解决一半的查询。我正在寻找改善此身份验证过程的方法。是否有单个正则表达式语句将检查此约束?让我知道是否需要更多信息。
答案 0 :(得分:0)
首先,为什么要使用正则表达式?正则表达式在数学上很糟糕。这样做会更容易:
X-XSS-Protection: 1; mode=block
答案 1 :(得分:0)
您真的需要一次输入会议年数吗? 我认为最好有两个输入(或者将会话年自动设置为第一年+ 1)。
我不知道您是否打算追求更大的目标,这只是一个例子,但对我而言,使用正则表达式似乎不适合该任务。
例如,您可以执行以下操作:
print("Enter session year")
first_year = int(input("First year: "))
second_year = int(input("Second year: "))
if second_year != (first_year + 1):
# some validation
else:
# program continues