python - 如何用正则表达式解决这个 python 问题?
问题描述
考虑下面的 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.")
给定像 My name is Earl 这样的输入,这个程序礼貌地输出 Hey, Earl。但是,给定像 My name is Earl Hickey 这样的输入,这个程序输出 Hey, Earl Hickey,感觉有点正式。建议如何修改 re.compile 的参数,使该程序在这两种情况下都会输出 Hey, Earl。
解决方案
您可以使用r"my name is (\w+)"
. \w+
将捕获组限制为一系列单词字符,因此我们将假设直到单词末尾的所有内容都是名字。
import re
words = input("Say something!\n")
matches = re.search(r"my name is (\w+)", words, re.I)
if matches:
print(f"Hey, {matches[1]}.")
else:
print("Hey, you.")
推荐阅读
- php - 根据用户角色和分类术语隐藏产品页面
- r - 如何根据另一列中的最大值在数据框中找到对应的列值
- ruby - 使用 Watir Webdriver 无法单击并继续使用 [Login] 按钮
- javascript - 删除字符串中的文本和标签
- python - Pyqt5:QSqlDatabase("QPSQL") 不能在不同于 5432 的端口上工作
- google-cloud-storage - googleCloudStorageDeleteOperator URL 编码“/”
- python - 美丽的汤。文本和标签仍然附加
- image - 从伴随对象中的资源访问图像
- linux - 如何使用 nohup 让 docker 命令在后台运行
- excel - 打开文件名中包含特定字符串的工作簿