【发布时间】:2021-12-05 22:36:28
【问题描述】:
我正在尝试匹配来自遵循特定模式的用户输入的消息。第一个模式是关键字“数据”后跟两位数字,第二个模式是关键字“状态”后跟一个单词。我使用了 if 语句,它仅在有一个要匹配的模式时才有效,但不能同时匹配两个模式,因为第二个模式将被跳过。
import re
message = input('Enter Your Message?\n')
trainee_data_pattern = re.compile(r"^(data)?\s?(\d\d)$")
data_match = trainee_data_pattern.search(message)
trainee_status_pattern = re.compile(r"^(status)?\s?(\w+)$")
status_match = trainee_status_pattern.search(message)
try:
if data_match.group() == message:
matched_num = trainee_data_pattern.search(message).group(2)
list1 = [11,22,33]
if int(matched_num) in list1:
print(f"ID: {matched_num}")
else:
print('no data')
elif status_match.group() == message:
matched_status = trainee_status_pattern.search(message).group(2)
list2 = ['good','bad','refurbished']
if matched_status in list2:
print(f"the status is {matched_status}")
else:
print('no data')
except AttributeError:
res = trainee_data_pattern.search(message)
print('wrong pattern')
程序所需的功能是当用户输入: 数据 22 -> ID:22
状态良好 -> 状态良好
数据 133 -> 错误模式
【问题讨论】:
标签: python if-statement python-re