40 lines
1.7 KiB
Python
40 lines
1.7 KiB
Python
# Author = Bosenko Boris Igorevich
|
|
# Group = P3115
|
|
# Date = 12.11.2025
|
|
|
|
import re
|
|
|
|
def cron(text):
|
|
pat_min = r'([*]*|((([1-5]?[0-9])[,])*|(((([1-5]?[0-9])|[*])[/])|(([1 5]?[0-9])[-]))?)([1-5]?[0-9])) '
|
|
pat_hour = r'([*]*|(((1?[0-9]|2[0-3])[,])*|(((((1?[0-9]|2[0-3])|[*])[/])|((1?[0-9]|2[0-3])[-]))?)(1?[0-9]|2[0-3]))) '
|
|
pat_day = r'([*]*|(((([1-9]|[1-2][0-9]|3[0-1])[,])*|(((([1-9]|[1-2][0-9]|3[0-1])|[*])[/])|(([1-9]|[1-2][0-9]|3[0-1])[-]))?)([1-9]|[1-2][0-9]|3[0-1]))) '
|
|
pat_mon = r'([*]*|(((([1-9]|(1[0-2]))[,])*|(((([1-9]|(1[0-2]))|[*])[/])|(([1-9]|(1[0-2]))[-]))?)([1-9]|(1[0-2])))) '
|
|
pat_week = r'([*]*|(((([0-6])[,])*|(((([0-6])|[*])[/])|(([0-6])[-]))?)[0-6]))'
|
|
pat = r'\s*' + pat_min + pat_hour + pat_day + pat_mon + pat_week + r'\s*'
|
|
if re.fullmatch(pat, text):
|
|
return "Cron-выражение правильное!"
|
|
else:
|
|
return "Cron-выражение содержит ошибку!"
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
tests = [
|
|
"* 88888 21 * 4",
|
|
" 5-15 * 4 6-8 * ",
|
|
"** /4 11 * -6 ",
|
|
"18,21 * 4/6 * 1,3",
|
|
" * 4 19 21 "
|
|
]
|
|
for test in tests:
|
|
print(cron(test), end=" ")
|
|
print()
|
|
results = [
|
|
"Cron-выражение правильное!",
|
|
"Cron-выражение правильное!",
|
|
"Cron-выражение содержит ошибку!",
|
|
"Cron-выражение правильное!",
|
|
"Cron-выражение содержит ошибку!"
|
|
]
|
|
print(*results, sep=" ")
|
|
except Exception as error:
|
|
print(f"Ошибка: {error}") |