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

为何正则匹配代码输出均为False?预期应为True和False

问题出在逻辑搞反了

你这代码逻辑完全写反了——当前函数要求所有单词都得匹配传入的pattern才返回True,但你要的是只要有一个单词匹配就返回True,否则False。这就是为啥两次输出都是False:

  • 传"hello"时,只有第一个单词匹配,后面的"shello"这些都不匹配,函数直接返回False
  • 传"hell"时,所有单词长度都比4长,re.fullmatch要求整个单词完全匹配,所以全不匹配,返回False
修复后的代码
import re  # 原代码漏了导入re,不加会报错

def match_the_words(pattern):
    the_words = ["hello", "shello", "qwello", "jello", "jelly", "jelloy", "hellboy"]
    for word in the_words:
        if re.fullmatch(pattern, word):
            return True  # 找到匹配的就立刻返回True
    return False  # 遍历完所有都没匹配,才返回False

print(match_the_words("hello"))  # 输出True
print(match_the_words("hell"))   # 输出False
重点说明
  • 核心逻辑修正:从「所有单词匹配才返回True」改成「有任意一个匹配就返回True」
  • re.fullmatch是严格匹配整个字符串,所以短的"hell"匹配不上任何长度更长的单词
  • 补上了必须的import re语句

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:37:08