You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测含问候语变体与姓名的字符串?正则表达式问题求助

解决问候语+姓名的正则匹配问题

你当前的正则表达式拼接后变成了hi|HeyAmy|David,逻辑完全错了——它会匹配单独的"hi"、连在一起的"HeyAmy"或者单独的"David",根本没实现「问候语+姓名」的匹配逻辑,这就是为啥只能匹配首个变体。

给你两个修正方案,按需选择:

固定问候语+固定姓名的场景

如果问候语只有Hi/Hey,姓名是Amy/David这类固定名单,用这个正则:

import re

# 测试输入示例
test_strings = ["Hey David", "Hi Amy", "hey amy", "HEY DAVID"]

for string in test_strings:
    # 正则逻辑:(问候语分组) + 至少一个空格 + (姓名分组),忽略大小写
    if re.search(r'(hi|hey)\s+(Amy|David)', string, re.IGNORECASE):
        print("匹配成功:test")

固定问候语+任意姓名的场景

如果姓名是任意英文姓名(不限制固定名单),把姓名部分换成匹配英文单词的规则:

import re

string = "Hey Max"
if re.search(r'(hi|hey)\s+[A-Za-z]+', string, re.IGNORECASE):
    print("匹配成功:test")

额外提示

  • 用re.search比re.findall更高效,因为我们只需要判断是否存在匹配,不需要提取所有结果
  • 要加更多问候语变体(比如Hello、Hiya),直接在第一个括号里补充就行:(hi|hey|hello|hiya)

内容的提问来源于stack exchange,提问作者Nopsii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 18:04:52