请考虑以下Python程序。
import re
words = input("Say something!\n")
p = re.compile("my name is (.*)", re.IGNORECASE)
matches = p.search(words)
if matches:
print(f"Hey, {matches[1]}.")
else:
print("Hey, you.")
给出类似“我的名字叫伯爵”的输入,该程序会礼貌地输出“嘿,伯爵”。给定 像“我的名字是伯爵·希基”这样的输入,但是,此程序输出“嘿,伯爵·希基, 感觉有点正式。提出如何修改参数以在其中重新编译 这样的方式(无需对Earl进行硬编码),该程序将改为输出Hey, 两种情况下都是伯爵。
答案 0 :(得分:1)
您可以使用payload
。 r"my name is (\w+)"
将捕获组限制为单词字符序列,因此我们make the assumption将直到单词末尾的所有内容都作为名字。
\w+