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

Python中如何匹配包含指定子串的完整单词?

解决方法:提取包含指定子串的完整单词

嘿,我懂你的痛点——用re.findall(r'replace', a)只能揪出子串本身,但你要的是整个包含这个子串的单词对吧?别担心,调整一下正则表达式就能搞定。

正确的正则写法

我们需要让正则匹配从单词边界开始,包含目标子串,再到单词边界结束的完整内容,代码示例如下:

import re
a = 'replacement replace filereplace filereplacer'
# 匹配包含'replace'的完整单词
matches = re.findall(r'\b\w*replace\w*\b', a)
print(matches)
# 输出结果: ['replacement', 'replace', 'filereplace', 'filereplacer']

正则表达式拆解

让我们拆解一下这个正则的各个部分:

  • \b:表示单词边界,用来界定一个单词的开始或结束(比如空格、标点和字母之间的位置)
  • \w*:匹配任意数量(包括0个)的字母、数字或下划线,用来匹配子串前后的部分
  • replace:你要查找的目标子串
  • 最后的\b:再次界定单词的结束,确保我们拿到的是完整单词

为什么原来的写法不行?

你之前用的r'replace'只会在字符串中精准匹配子串本身,每找到一次replace就返回一次,所以得到的是四个子串的列表,而不是包含子串的完整单词。

补充:处理特殊单词

如果你的字符串里有包含连字符、撇号(比如don't)这类非\w字符的单词,可以把\w换成更宽泛的字符集,比如:

# 匹配包含连字符或撇号的单词
matches = re.findall(r'\b[\w\'-]*replace[\w\'-]*\b', a)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:01:28