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

Python正则表达式匹配含指定子串的完整单词问题求助

原写法存在的问题
  1. 正则规则仅覆盖了tion/ex等目标子串本身,没有包含子串前后同属一个单词的其他字母,所以匹配结果只有子串片段,无法返回完整单词
  2. 字符串没有加原始前缀r,\b会被Python解析为退格转义符,无法作为正则的单词边界规则生效
  3. ast+\b的写法有误,量词+仅作用于相邻的t字符,会匹配astt这类不符合要求的序列,违背了匹配包含ast子串的需求
  4. 直接使用捕获分组做或匹配时,re.findall会优先返回分组内的内容,就算写了全单词规则也只会返回目标子串片段
修正后的实现
import re
def latin_ish_words(text):
    return re.findall(r'\b[a-z]*(?:tion|ex|ph|ost|ist|ast)[a-z]*\b', text, re.I)

正则规则说明

  • r前缀声明原始字符串,确保\b作为单词边界规则传递给正则引擎
  • \b标记单词边界,避免匹配到数字、符号与字母组合的非纯单词内容
  • [a-z]*匹配目标子串前后的任意英文字母(不区分大小写由re.I参数实现)
  • (?:...)是非捕获分组,将多个目标子串作为整体做或匹配,同时不会让re.findall仅返回分组内的子串内容,保证返回完整的匹配单词
测试验证
  • 调用latin_ish_words("This functions as expected"),返回['functions', 'expected'],符合预期
  • 调用latin_ish_words('Philosophy ex nihilo existed in the past'),返回['Philosophy', 'ex', 'existed', 'past'],符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:45:03