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

Python如何提取含指定子串的单词?支持大小写不匹配场景

提取句子中包含指定子串的单词(支持大小写不敏感匹配)

问题分析

你之前用re.findall(f".*{search}*", sentence)返回整个句子,是因为.*会匹配任意字符(包括空格)直到字符串结尾,根本没限定单词边界。下面给两种可靠的解决方法:


方法一:正则表达式推荐

正则能精准控制匹配逻辑,注意要转义搜索子串里的特殊字符(比如.是正则通配符,必须转义),同时开启大小写不敏感匹配:

import re

sentence = "Hi this is just an Example.COM sentence"
search = ".com"

# 转义搜索子串中的正则特殊字符
escaped_search = re.escape(search)
# 匹配包含指定子串的完整单词,不区分大小写
matches = re.findall(r'\b\w*' + escaped_search + r'\w*\b', sentence, flags=re.IGNORECASE)
print(matches)  # 输出: ['Example.COM']

关键细节:

  • re.escape(search):避免搜索子串里的特殊字符(比如.)被当作正则语法解析,确保匹配字面内容。
  • \b:单词边界,保证只提取完整的单词,不会匹配句子中零散的字符片段。
  • \w*:匹配子串前后的任意字母/数字/下划线,确保整个包含子串的单词被完整捕获。
  • flags=re.IGNORECASE:开启大小写不敏感模式,不管子串是.com/.COM/.Com都能匹配到对应单词。

方法二:纯字符串操作适合新手

如果觉得正则难理解,用字符串拆分+列表推导式更直观:

sentence = "Hi this is just an Example.COM sentence"
search = ".com"

# 拆分句子为单词列表,遍历判断是否包含目标子串(大小写不敏感)
words = sentence.split()
matches = [word for word in words if search.lower() in word.lower()]
print(matches)  # 输出: ['Example.COM']

这种方法通过统一转小写来判断包含关系,同时保留原单词的大小写格式,逻辑简单易懂。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:35:18