如何在if语句中检测输入内容包含的大小写混合形式的指定单词
混合大小写目标单词检测方案
你可以通过不区分大小写的匹配逻辑实现混合大小写单词的检测,同时可以保留原始文本的大小写状态满足你已有的分支输出需求:
- 核心逻辑:仅将待匹配文本和目标词的副本统一转换为全小写/全大写做匹配判断,不修改原始文本
- 匹配成功后可直接读取原始文本片段的大小写状态,对接你已经写好的全小写、全大写输出逻辑
Python 实现示例
如果需要匹配完整独立单词(避免orangeade这类包含目标词的长词被误判),推荐用正则加忽略大小写标识实现:
import re # 你的目标词 target_word = "orange" # 用户输入内容 input_content = "I bought an oRange, two oranGe and three ORANGE today." # 编译正则:re.IGNORECASE 标识开启不区分大小写匹配,\b 匹配单词边界 match_pattern = re.compile(rf"\b{re.escape(target_word)}\b", re.IGNORECASE) for match_result in match_pattern.finditer(input_content): original_word = match_result.group() # 对接你已有的判断逻辑 if original_word.islower(): print(f"匹配到全小写形式:{original_word}") elif original_word.isupper(): print(f"匹配到全大写形式:{original_word}") else: print(f"匹配到混合大小写形式:{original_word}")
如果不需要匹配独立单词,仅判断是否包含对应字符序列,删除正则中的\b边界符即可。
JavaScript 实现示例
const targetWord = "orange" const inputContent = "I bought an oRange, two oranGe and three ORANGE today." // gi标识:g=全局匹配,i=不区分大小写,前面的替换逻辑用于转义正则特殊字符 const matchReg = new RegExp(`\\b${targetWord.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\b`, "gi") let matchResult while ((matchResult = matchReg.exec(inputContent)) !== null) { const originalWord = matchResult[0] if (originalWord === originalWord.toLowerCase()) { console.log(`匹配到全小写形式:${originalWord}`) } else if (originalWord === originalWord.toUpperCase()) { console.log(`匹配到全大写形式:${originalWord}`) } else { console.log(`匹配到混合大小写形式:${originalWord}`) } }
注意事项
- 若目标词包含
.、*、?这类正则特殊字符,必须做转义处理,避免正则运行报错 - 无需正则的简单场景也可以直接将输入按空格/分隔符拆分后,逐个转成小写和目标词的小写形式对比,实现匹配
内容的提问来源于stack exchange,提问作者Polylyly
相关产品推荐
相关产品推荐

