为何正则匹配代码输出均为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
相关产品推荐
相关产品推荐

