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

如何使用Python正则匹配含2个及以下o字符的空格分隔单词

原正则的问题

  1. 量词{1}仅限定匹配至少1个o,没有设置数量上限,只要单词包含至少1个o就会被匹配,无法拦截3个及以上o的单词
  2. 排除类字符集写错为[^a\s],本应该排除的是字符o而非a,导致完全没起到统计o数量的作用

修正后的实现

要求匹配包含2个及以下o的单词,正则可以写为:
r'\b(?:[^o\s]*o){0,2}[^o\s]*\b'

  • (?:[^o\s]*o){0,2}:非捕获组,最多匹配2次「非o、非空白字符后跟一个o」的结构,把单词内的o数量限制在0~2个
  • 末尾的[^o\s]*匹配单词剩下的所有非o、非空白字符,保证完整匹配整个单词
  • 如果你的需求是至少1个最多2个o,把量词{0,2}改成{1,2}即可

完整运行代码:

import re

pattern = r'\b(?:[^o\s]*o){0,2}[^o\s]*\b'
text = "hop hoop hooop hoooop hooooop"
print(re.findall(pattern, text))

运行输出:

['hop', 'hoop']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:06:03